2010-12-05 121 views
0

想要从cvs中将某些缺失值的数据导入到postgresql中。我很高兴使用字符串插入。我想快一点就是用list或者similer来做这个。我还需要检查缺少的值并替换为其他明智的错误。使用列表输入数据使用psycoyg2 python(缺少数据)

for w in csvReader: 
    if a ==0: 
     var = w 
     sql_table = 'CREATE TABLE TableName (%s)' % ','.join('%s VARCHAR(50)' % name for name in var) 
     dict_cur.execute(sql_table) 

    else: 
     colnum = 0 
     for col in w: 
      nms= col 
      print w, 'column' 
      #this is not correct 
      sql_insert = ('INSERT INTO TableName (%s) VALUES (%s)' % (','.join('%s' % name for name in var),','.join('%s' % nm for nm in nms))) 
      cursor.execute(sql_insert) 
      colnum += 1 

     print w 
    a = a + 1 

错误 回溯(最近通话最后一个): 文件 “/home/matthew/workspace/dfdsggd/try_db_thing.py” 41行,在 cursor.execute(sql_insert) psycopg2.ProgrammingError:在“或”附近的语法错误。“ LINE 1:... ORDER_ADM,MONTH_ADM,DAY_ADM,YEAR_ADM)VALUES(2,6,7,,3,5,7) ^

+1

从你的一些例子csv和表的结构将是很好,如果你想明确的答案 – kriss 2010-12-05 22:31:01

回答

0

望着错误消息,它只是看起来像你正在尝试插入'。'只需从ORDER_ADM字段的数据库中的csv中读取,而不用将它放在引号之间。

此外,三个文件DAY_ADM,MONTH_ADM,YEAR_ADM建议您可能应将它们合并到一个日期并将它们放在数据库的同一个字段中。但是这意味着以某种方式思考数据库的结构(而不​​是制作一切VARCHAR)。在循环中创建表来读取数据,即使在第一次迭代中也是非常不寻常的。

+0

是的我同意循环,但这是我发现。 – user531525 2010-12-06 00:05:21