0

想从 cvs 中获取一些缺失值的数据到 postgresql 中。我很高兴使用字符串插入。我想要一个快速的是使用列表或类似的东西来做到这一点。我还需要检查缺失值并替换,否则会出错。

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:在“。”或附近出现语法错误 第 1 行:...ORDER_ADM,MONTH_ADM,DAY_ADM,YEAR_ADM) 值 (2,6,7,.,3,5,7) ^

4

1 回答 1

0

查看错误消息,看起来您正在尝试插入“。” 只需在 ORDER_ADM 字段中从数据库中的 csv 读取,而无需将其放在引号之间。

此外,DAY_ADM、MONTH_ADM、YEAR_ADM 这三个字段建议您可能应该将它们合并为一个日期并将它们放在数据库的同一字段中。但这意味着以某种方式考虑数据库的结构(而不​​是使所有内容都变成 VARCHAR)。即使在第一次迭代中,也在循环中创建读取数据的表是非常不寻常的。

于 2010-12-05T22:32:59.353 回答