2010-12-05 4 views
0

Wollen Sie Daten mit einigen fehlenden Werten von cvs in postgresql erhalten. Ich bin glücklich, mit Strings einfügen. Ich hätte gerne ein schnelles war dies mit der Liste oder etwas Similer zu tun. Ich muss auch nach fehlenden Werten suchen und sie ersetzen, da sonst ein Fehler auftritt.Verwenden der Liste zum Eingeben von Daten mit psycoyg2 python (mit fehlenden Daten)

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 

Fehler Traceback (jüngste Aufforderung zuletzt): File "/home/matthew/workspace/dfdsggd/try_db_thing.py", Zeile 41, in cursor.execute (sql_insert) psycopg2.ProgrammingError: Syntaxfehler bei oder nahe "." LINE. 1: ... ORDER_ADM, MONTH_ADM, DAY_ADM, YEAR_ADM) VALUES (2,6,7, 3,5,7) ^

+1

ein Beispiel von Ihnen csv und Struktur der Tabelle wäre nett, wenn Sie eine klare Antwort wollen – kriss

Antwort

0

bei der Fehlermeldung Sehen, es sieht aus wie Sie versuchen, ein '.' Lesen Sie einfach in Ihrer Datenbank im Feld ORDER_ADM von csv, ohne es in Anführungszeichen zu setzen.

Auch die drei Dateien DAY_ADM, MONTH_ADM, YEAR_ADM schlagen vor, dass Sie sie wahrscheinlich in ein Datum zusammenführen und in das gleiche Feld der Datenbank einfügen sollten. Aber es bedeutet, irgendwie über die Struktur der Datenbank zu denken (nicht alles VARCHAR). Auch das Erstellen einer Tabelle in der Schleife, die Daten liest, ist selbst bei der ersten Iteration ziemlich ungewöhnlich.

+0

Ja stimme ich auf die Schleife, aber das ist, was ich gefunden habe. – user531525

+0

Da ich nicht genau den Datentyp weiß, um damit zu beginnen, habe ich darüber nachgedacht, einfach die Daten zu bekommen und sie dann in Postgres zu ändern. Ich kann die Datentypen mit Regex und automatischer Änderung einlesen. – user531525

+0

Das ist wirklich ein Beispiel. Psycopg2 macht es sehr schwer zu tun, weil es keine vorbereiteten Aussagen gibt. – user531525

Verwandte Themen