【发布时间】:2021-03-27 15:37:54
【问题描述】:
我正在尝试使用 pandas 读取 csv 文件并将其写入 oracle 数据库
import pandas as pd
import sqlalchmey types, create_engine
df = pd.read_csv("abc.csv")
df.dtypes
Name object
CName object
price float64
df.head(2)
Name CName price
Gary ALS 13.0
John Ülka 19.9
engine = create_engine('oracle://+ xxx + xxx + 'connection string')
connection = engine.connect()
df.to_sql(name='test-tbl', con=connection, index=False, if_exists='append')
File "/apps/anaconda/4.6.14/envs/TST/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1468, in _handle_dbapi_exception
util.reraise(*exc_info)
File "/apps/anaconda/4.6.14/envs/TST/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 154, in reraise
raise value
File "/apps/anaconda/4.6.14/envs/TST/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1224, in _execute_context
cursor, statement, parameters, context
File "/apps/anaconda/4.6.14/envs/TST/lib/python3.6/site-packages/sqlalchemy/dialects/oracle/cx_oracle.py", line 1080, in do_executemany
cursor.executemany(statement, parameters)
UnicodeEncodeError: 'ascii' codec can't encode character '\xea' in position 23: ordinal not in range(128)
目前我正在使用python3.6测试上面的代码,看到上面的错误。有没有人可以帮助解决这个问题?
包版本: 熊猫-1.0.3 cx_oracle-6.4.1 sqlalchemy-1.3.5
UTF-8 CSV 文件格式
【问题讨论】:
-
你
CHARACTER SEToracle 数据库了吗? -
不,我没有。代码在python2.7上运行良好,但从现在开始我必须使用python3.6。
-
在读取 CSV 文件时尝试强制编码。尝试使用 encoding='utf-8', encoding='latin1', encoding='iso-8859-1' 或 encoding='cp1252'...
-
当然。我已经使用 encoding='utf-8' 进行了测试,但没有运气。我会和其他人一起试试,然后告诉你。
-
你设置了 NLS_LANG 吗?还是使用stackoverflow.com/a/53738233/4799035(一般使用UTF-8 可能)?或者你可以升级到默认使用 UTF-8 的 cx_Oracle 8。
标签: python pandas oracle sqlalchemy