2017-09-22 164 views
0

我有一個需要在BTEQ中執行的文件,該文件使用BOM以UTF16格式化。不過,我得到以下錯誤,當我嘗試運行該文件之前,設置字符集:無法在BTEQ中將SESSION CHARSET設置爲UTF16

.SET SESSION CHARSET 'UTF16'; 
*** Error: SET SESSION CHARSET UTF16 is not allowed. 

我可以設置爲UTF-8和文件轉換爲UTF-8和它的作品。我也可以將文件轉換爲不帶BOM的UTF8,並且不設置腳本運行的CHARSET。這個文件是系統生成的,我將這個腳本部署自動化,因此轉換文檔不是首選。

添加附加信息: 用於我的自動化的輸入腳本沒有BOM,並使用.RUN FILE選項在Powershell中生成,以打開具有BOM的文件。因此需要執行.SET SESSION CHARSET設置。

回答

2

utf-16模式啓動bteq,使用下面的命令

>bteq -c utf16 

根據Teradata的文檔:

-c選項定義了會話字符集編碼爲一個Unicode 會話並接受一個參數,其可以是任何支持的字符集 值

可以使用.show control charset進行驗證。

T e r a d a t a B T E Q 1 6 . 0 0 . 0 0 . 0 2 f o r W I N 3 2 . P I D : 1 2 1 2 
C o p y r i g h t 1 9 8 4 - 2 0 1 6 , T e r a d a t a C o r p o r a t i o n . A L L R I G H T S R E S E R V E D . 
E n t e r y o u r l o g o n o r B T E Q c o m m a n d : 
.show control charset; 

. s h o w c o n t r o l c h a r s e t ; 

    [ S E T ] S E S S I O N C H A R S E T     = U T F 1 6 ;            
       i m p o r t/e x p o r t e n c o d i n g = U T F 1 6 ;            
       s t d i n/s t d o u t e n c o d i n g  = U T F 1 6 ; 

您可以檢查invoking-bteq-to-use-unicode的細節

+0

用於自動化我輸入腳本沒有BOM和使用.RUN FILE選項來打開確實有BOM的文件,在PowerShell中產生。因此需要執行.SET SESSION CHARSET設置。 – Russ960

+0

我做了一些進一步的測試,發現獲取.SET SESSION CHARSET接受'utf16'的唯一方法是將BOM輸入文件修改爲UTF16和BOM,然後按建議啓動。感謝您的幫助。 – Russ960