首页 > 解决方案 > Lambda 无法将 CSV 导入 RDS SQL Server

问题描述

我正在将文件从 s3 存储桶导入 SQL Server。获取文件没有问题,但是当我尝试将其导入 SQL 时,我不断收到以下错误:

errorMessage": "(207, b"无效的列名 'nan'.DB-Lib 错误消息

我的代码如下所示:

client = boto3.client('s3')
my_bucket = 'address/staging'
filename = 'anjou_mailing_list.csv'
subscriber_csv = client.get_object(Bucket = my_bucket, Key = data_filename)
data_body = subscriber_csv["body"]
csv_string = data_body.read().decode('utf-8')
sub_df = pd.read_csv(StringIO(csv_string), sep = ',')
#Make db connection
conn = pymssql.connect(server = 'rds_sqlserver.com', user='username',password = 'my_password', database = 'mixology')
cursor = conn.cursor()
  for index, row in sub_df.itterrows():
     cursor.execute('''INSERT INTO dbo.anjou_class(firstname,lastname, email, street, city, state, zip, country_code)
                        VALUES(%s,%s,%s,%s,%s,%s,%s,%s)
                        '''
                        , (row['f_name']
                        , row['lname']
                        , row['email_address']
                        , row['street_ad']
                        , row['city']
                        , row['state']
                        , row['zip']
                        , row['country'])
                        )
cursor.commit()

示例 csv 如下所示:

John,Doe,fakemail@gmail.com,Greenleaf CT,APT 204,Aurora,OH,48736,,
Beatrice,Winncons,heremail@gmail.com,2018 crafters,Shelbyville,IN,60505,,

我没有收到 synatx 错误,当我在本地运行代码时,我的数据正在输入。但是当我将它作为 lambda 函数运行时,它会倒下。我认为公寓地址需要一个引号字符,所以我添加了一个更改 sub_df =pd.read_csv(StringIO(csv_string), sep = ',', quotechar = '"')但这似乎也失败了。

提前致谢

标签: pythonsql-serveramazon-web-servicesaws-lambdaamazon-rds

解决方案


推荐阅读