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 の 3 つのフィールドは、おそらくそれらを日付にマージして、データベースの同じフィールドに配置する必要があることを示唆しています。しかし、それはデータベースの構造を何とか考えることを意味します(すべてをVARCHARにするのではなく)。また、最初の反復であっても、データを読み取るループでテーブルを作成することは非常に珍しいことです。

于 2010-12-05T22:32:59.353 に答える