Dan*_*ty2 2 oracle sqlalchemy python-3.x
使用熊猫 18.1...
我正在尝试遍历 CSV 文件夹来读取每个 CSV 并将其发送到 Oracle 数据库表。我的众多 CSV 之一中潜伏着一个非 ASCII 字符(更像是陶醉在我的痛苦中)。我不断收到此错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xab' in position 8:
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
这是代码:
import pandas as pd
import pandas.io.sql as psql
from sqlalchemy import create_engine
import cx_Oracle as cx
engine = create_engine('oracle+cx_oracle://schema:'+pwd+'@server:port/service_name'
,encoding='latin1')
name='table'
path=r'path_to_folder'
filelist = os.listdir(path)
for file in filelist:
df = pd.read_csv(pathc+'\\'+file,encoding='latin1',index_col=0)
df=df.astype('unicode')
df['date'] = pd.to_datetime(df['date'])
df['date'] = pd.to_datetime(df['Contract_EffDt'],format='%YYYY-%mm-%dd')
df.to_sql(name, engine, if_exists = 'append')
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
我想做的: 用其他字符替换不可读的字符,最重要的是,继续向 Oracle 发送数据。
笔记:
我使用的数据文件来自 cms.gov 网站。这是一个带有示例的 zip 文件。我正在使用“contracts_info”文件。
提前致谢!
您需要像这样设置 NLS_LANG 环境变量:
os.environ['NLS_LANG']= 'AMERICAN_AMERICA.AL32UTF8'
Run Code Online (Sandbox Code Playgroud)
那么就不会出现这个错误了。
| 归档时间: |
|
| 查看次数: |
2651 次 |
| 最近记录: |