2010-12-05 14 views
0

cvsから欠落している値を持つデータをpostgresqlに取得したい。私は文字列を使って挿入して嬉しいです。私はリストや何かの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 

エラー トレースバック(最新の呼び出しの最後): cursor.execute(SQL_INSERT) psycopg2.ProgrammingErrorで ファイル "/home/matthew/workspace/dfdsggd/try_db_thing.py"、41行目: "または"の近くに構文エラーがあります。 LINE 1:あなたがしようとしているように... ORDER_ADM、MONTH_ADM、DAY_ADM、YEAR_ADM)VALUES(2,6,7、3,5,7) ^

+1

明確な答えが必要な場合は、csvとテーブルの構造が良いでしょう – kriss

答えて

0

は、エラーメッセージを見ると、それだけに見えます'を挿入するORDER_ADMフィールドのデータベース内のcsvから引用符で囲まずに読み取るだけです。

また、3つのフィールドDAY_ADM、MONTH_ADM、YEAR_ADMは、それらを日付にマージし、それらをデータベースの同じフィールドに入れることを示唆しています。しかし、それは何らかの形でデータベースの構造について考えていることを意味する(すべてのVARCHARを作っていない)。また、最初の繰り返しでも、データを読み取るループ内にテーブルを作成することは非常に珍しいことです。

+0

はい、私はループに同意しますが、それは私が見つけたものです。 – user531525

+0

データタイプが正確にわからないので、データを取得してPostgresで変更することを考えていました。正規表現と自動変更を使用してデータ型を読み取ることができます。 – user531525

+0

これは本当に一種の例です。 Psycopg2は準備ができていないため、非常に難しい作業です。 – user531525

関連する問題