gpt4 book ai didi

oracle - Pandas 通过 SQL Alchemy : UnicodeEncodeError: 'ascii' codec can't encode character 到 Oracle

转载 作者:行者123 更新时间:2023-12-02 15:21:02 25 4
gpt4 key购买 nike

使用 Pandas 18.1...

我正在尝试遍历 CSV 文件夹以读取每个 CSV 并将其发送到 Oracle 数据库表。在我的许多 CSV 之一中潜伏着一个非 ascii 字符(更像是 Revel 在我的痛苦中)。我不断收到此错误:

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')

我试过以下方法:

  1. encoding=utf-8(在引擎中,如果我在 read_csv 中这样做,它会抛出错误)
  2. 在引擎中的“service_name”之后添加 ?encoding=utf8
  3. 使用 df=df.astype('unicode')(而不是)

我想做什么:用其他内容替换不可读的字符,最重要的是,继续将数据发送到 Oracle。

注意:

我使用的数据文件来自 cms.gov 网站。 Here's a zip file with an example .我正在使用“contracts_info”文件。

提前致谢!

最佳答案

您需要像这样设置 NLS_LANG 环境变量:

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

那么这个错误就不会发生了。

关于oracle - Pandas 通过 SQL Alchemy : UnicodeEncodeError: 'ascii' codec can't encode character 到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com