使用Python将CSV文件写入红移
问题描述:
当我试图执行下面的脚本时,我收到一个错误“太多的参数”,我的csv文件有大约28列和30行。所有的连接都正确做工精细的阅读,没有其他问题,因为每个日志我明白我不能在红移使用Python将CSV文件写入红移
import psycopg2
import csv
import time
import datetime
import pandas as pd
import sys
reload (sys)
sys.setdefaultencoding('utf8')
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
print('script sterts')
connect=psycopg2.connect(dbname='db',host='***********',port=5439,user='****',password='********')
cur=connect.cursor()
print('begin execute')
up_pgm_list = pd.read_csv ('/prod/user/home/dqe933/FNI.csv')
with open('/prod/user/home/dqe933/FNI.csv', 'Ur') as csvfile:
spamreader=csv.reader(csvfile,delimiter=',')
for row in spamreader:
cur.execute("""INSERT INTO UD_INTERIM.dqe933_fni_new(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,
col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28)values(?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)""",*row)
print('complete')`enter code here`
答
row
写超过2个或3列表中不应该被解开。确保它是由项目组成的迭代。
cur.execute("""INSERT INTO UD_INTERIM.dqe933_fni_new(col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)""", row)
+0
它给了我另一个错误..任何想法??值(?,?,?,?,?,?,?,?,?,?,?,?, “ psycopg2.ProgrammingError:句法错误处于或接近”,“ LINE 3”,“,”,“,”,“,”,“,”,“,”,“,”,“, :数值(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?... –
+0
检查查询中的中断 –
csv文件是否有标题?如果是这样,你需要跳过它。也看看cur.executemany() – J2112O