0
使用大熊貓18.1 ...熊貓通過SQL鍊金術甲骨文:UnicodeEncodeError:「ASCII」編解碼器不能編碼字符
我試圖通過CSV中的文件夾重複讀取每個CSV並將其發送到一個Oracle數據庫表。潛伏在我的許多CSV中的一個非ascii角色(更像是沉浸在我的痛苦中)。我不斷收到此錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character '\xab' in position 8:
ordinal not in range(128)
下面的代碼:
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')
我已經試過如下:
- 編碼= UTF-8(在發動機,如果我這樣做在read_csv中,它會引發錯誤)
- 在引擎中的「service_name」之後添加?encoding = utf8
- 使用df = df.as類型(「統一」)(不)
我想要做什麼: 用別的東西,最重要的,繼續將數據發送到Oracle替換不可讀字符。
注意:
我使用的數據文件來自cms.gov網站。 Here's a zip file with an example。我正在使用「contracts_info」文件。
提前致謝!