Teradata TPT處理Unicode方法
上述錯誤的原因可以解釋為:There is a schema mismatch between the schema defined in TPT script and the schema returned from the select request sent to DBS.
要避免此問題其實比較簡單,你只需要設定與session字符集相匹配的欄位長度即可:
如果你在TPT指令碼中將session的字符集設定為UTF8,你需要:
-- 將Unicode欄位的長度設定為原來的3倍;
-- 將LATIN欄位的長度設定為原來的2倍.
如果你在TPT指令碼中將session的字符集設定為UTF16,你需要 :
-- 將所有Unicode及LATIN欄位的長度均設為原欄位長度的2倍。
以session字符集設為UTF16舉例說明如下:
源表:
CREATE MULTISET TABLE TESTDB.SMS_E9_DAILY_NEW_OLD
(
data_date DATE FORMAT 'YYYYMMDD' TITLE '日期',
area VARCHAR(10) CHARACTER SET UNICODE NOT CASESPECIFIC TITLE '區域名稱',
cdsc_type_lvl2 VARCHAR(8) CHARACTER SET UNICODE NOT CASESPECIFIC TITLE '套餐名稱',
CDSC_3G_type VARCHAR(8) CHARACTER SET UNICODE NOT CASESPECIFIC TITLE '3G套餐名稱',
Sum_New_Users INTEGER TITLE '新增使用者數',
Sum_Combi_Users INTEGER TITLE '新增融合使用者')
PRIMARY INDEX ( data_date ,area ,cdsc_type_lvl2 ,CDSC_3G_type );
可以看到,上述表有三個Unicode欄位,其長度分別為10,8,8,因此TPT指令碼需要定義為:
USING CHARACTER SET UTF16
DEFINE JOB APPMART_SMS_E9_DAILY_NEW_OLD
(
DEFINE SCHEMA TDSCHEMA
DESCRIPTION 'SCHEMA DEFINITION'
(
data_date INTDATE,area VARCHAR(20),cdsc_type_lvl2 VARCHAR(16),CDSC_3G_type VARCHAR(16),Sum_New_Users INTEGER,Sum_Combi_Users INTEGER
);
DEFINE OPERATOR EXPORT_OPERATOR
TYPE EXPORT
SCHEMA TDSCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'export_log',
...
);
DEFINE OPERATOR UPDATE_OPERATOR
TYPE UPDATE
SCHEMA *
ATTRIBUTES
(
VARCHAR UserName='SYSDBA',
...
VARCHAR WorkingDatabase
);
APPLY ('insert into TESTDB.SMS_E9_DAILY_NEW_OLD (data_date,area,cdsc_type_lvl2,CDSC_3G_type,Sum_New_Users,Sum_Combi_Users) values (:data_date,:area,:cdsc_type_lvl2,:CDSC_3G_type,:Sum_New_Users,:Sum_Combi_Users);') TO OPERATOR (UPDATE_OPERATOR[1])
SELECT * FROM OPERATOR (EXPORT_OPERATOR[1]);
);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16723161/viewspace-1057703/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript 如何正確處理 Unicode 編碼問題!JavaScriptUnicode
- JavaScript如何正確處理Unicode編碼問題!JavaScriptUnicode
- Java中文處理學習筆記——Hello Unicode (轉)Java筆記Unicode
- 如何在Java中輕鬆處理Emoji Unicode - UdayakumarJavaUnicode
- 非同步處理方法非同步
- 影像預處理方法
- APM RUEI processor處理程式hang死處理方法
- JVM如何處理方法呼叫JVM
- php事務處理方法PHP
- AlertDialog 處理方法二
- 處理問題的方法
- 異常處理方法 (轉)
- Python 編碼處理之 str與Unicode的區別與使用PythonUnicode
- ptyon 特殊處理 url 編碼與解碼,字元編碼轉化 unicode字元Unicode
- 【廖雪峰python入門筆記】Unicode編碼_UnicodeDecodeError處理Python筆記UnicodeError
- 處理恢復資料方法
- JavaScript常用的字串處理方法JavaScript字串
- 高併發的處理方法
- ORACLE鎖等待的處理方法Oracle
- 各種報錯處理方法
- Smartform中的長文處理方法ORM
- SAP匯率損益處理方法
- teradata CASTAST
- teradata limitsMIT
- 資料預處理方法彙總
- 處理字串的方法都在這裡字串
- 自然語言處理:分詞方法自然語言處理分詞
- yum groupinstall報錯,處理方法
- ORA-38760 問題處理方法
- 關於Oracle死鎖處理方法Oracle
- namespace mismatch require錯誤處理方法namespaceUI
- 控制檔案丟失處理方法
- netvault Client **** is unreachable的處理方法client
- listener.log太大的處理方法
- 衝突處理的方法(轉載)
- oracle 誤刪除的處理方法Oracle
- JavaMail中文附件的處理方法 (轉)JavaAI
- ORA-01438處理方法