簡體   English   中英

使用python將panda df插入Oracle數據庫

[英]Insert panda df to Oracle database using python

我有一個帶有文本列('testdf')的熊貓數據框。 我正在使用下面的代碼插入到 oracle 數據庫中的 TEST 表

from sqlalchemy import create_engine, Unicode, NVARCHAR
engine = create_engine("oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}"
                       .format(user="xxx",
                               pw="xxx",
                               db="xx"))
testdf.to_sql("TEST", con = engine, if_exists = 'append')

但它返回編碼錯誤如下:

UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f447' in position 237: character maps to <undefined>

我怎么解決這個問題? 我正在使用 Python 3、帶有 Anaconda 的 Jupyter Notebook

這是一個常見的問題。 我認為這個答案很好 或者這個

問題是 Python 正在嘗試將您的數據(以 Unicode 編碼)轉換為其他字符集以插入到數據庫中,而其他字符集不包括\\U0001f447 (在您的數據\\U0001f447 )。 這個答案指出,如果你查看完整的錯誤回溯,而不僅僅是錯誤消息,它會告訴你它試圖轉換成哪個字符集。

有幾種不同的選擇。 最簡單的方法可能是將?charset=utf8傳遞給連接字符串中的 cx_oracle。 這告訴 cx_oracle 將字符串作為 Unicode 發送。

"oracle+cx_oracle://{user}:{pw}@xxxxx.xxxxx.xx:1521/{db}?charset=utf8"

您也可以嘗試設置 NLS_LANG 環境變量 這將告訴 Oracle 服務器期望來自您的 Python 應用程序的 Unicode。

os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM