[問題] python寫中文到teradata的問題
大家好
最近要用python3寫資料到teradata
但遇到神奇的事
teradata的VARCHAR欄位
寫入英文與數字沒問題
但寫入中文字就不行了
程式:
connection= pyodbc.connect("driver={Teradata};dbcname=" + host + ";uid=" + user + ";pwd=" + pwd + ";charset=utf8;",
autocommit=True)
connection.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
connection.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
connection.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-8')
connection.setencoding(encoding='utf-8')
cursor= connection.cursor()
cursor.execute("INSERT INTO table(CUSTOMER_ID, HEADQ_BR_CD,
STATUS, OWNER_NAME,
BUSINESS_NAME,ADDRESS,CAPITAL,ORGANIZATION_TYPE,REGISTER_DATE,REGISTER_TYPE,REGISTER_TYPE_NAME)
VALUES('3764H','aa','非營','cc','','','500','','102041','56555','')");
print("ok")
#disconnect
connection.close()
錯誤訊息
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-196-18f43ad125bd> in <module>()
21 cursor= connection.cursor()
22 # create employee table
---> 23 cursor.execute("INSERT INTO table(CUSTOMER_ID,
HEADQ_BR_CD, STATUS, OWNER_NAME,
BUSINESS_NAME,ADDRESS,CAPITAL,ORGANIZATION_TYPE,REGISTER_DATE,REGISTER_TYPE,REGISTER_TYPE_NAME)
VALUES('3764H','aa','非營','cc','','','500','','102041','56555','')");
24 print("ok")
25 #disconnect
Error: ('HY000', '[HY000] [Teradata][ODBC Teradata Driver][Teradata
Database](-6706)The string contains an untranslatable character. (-6706)
(SQLExecDirectW)')
在teradata建立table時
這些VARCHAR欄位的charset有設成LATIN
python3預設好像是utf-8
不知道是否因此影響中文字的寫入?
我是不是寫入前要把字串轉成LATIN ?
python有辦法把utf-8轉成LATIN嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.77.125
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1536768851.A.AE5.html
推
09/13 00:42,
5年前
, 1F
09/13 00:42, 1F