Führen Sie den Befehl COPY unter PostgreSQL mit Python aus. In psycopg gibt es eine copy_from-Funktion, die es sehr einfach und leicht verständlich macht.
Die Installation ist auch mit dem Befehl PIP möglich. Weitere Informationen finden Sie unter http://initd.org/psycopg/docs/install.html
Senden Sie die Datei auf dem Computer, auf dem Python im TSV-Format ausgeführt wird, an PostgreSQL.
copy_from.py
import psycopg2
try:
#Stellen Sie eine Verbindung zu PostgreSQL her
conn = psycopg2.connect("dbname='Name der Datenbank' user='Login Benutzername' host='Hostname' password='****'")
cur = conn.cursor()
conn.set_isolation_level(0)
#Lesen von Dateien, die an die Datenbank gesendet werden sollen
f = open('/Dateipfad/Dateiname' mode='r' encoding='utf-8') #Wenn Sie den Zeichencode angeben, können Sie den Fehler zum Zeitpunkt des KOPIERENS unterdrücken.
#COPY-Ausführung
cur.copy_from( f , 'Tabellenname', sep='\t', null='\\N',columns=('Spaltenname 1','Spaltenname 2'))
# sep='Trennzeichentyp: TAB-Symbol im Beispiel'
# null='Nullzeichentyp: NULL im Beispiel'
# columns=('')Listen Sie die einzugebenden Spaltennamen in der angegebenen Reihenfolge auf und können weggelassen werden, wenn alle Spalten eingegeben werden können.
conn.commit() #Vergiss nicht! !!
f.close()
print( "OK" )
except psycopg2.Error as e:
print( "NG Copy error! ")
print( e.pgerror )
Der Punkt der Funktion copy_from ist das erste Argument.
file – file-like object to read data from. It must have both read() and readline() methods.
Es scheint, dass in einer Datei oder einem Objekt wie einer Datei sowohl read () als auch readline () vorhanden sein müssen. Im Beispielcode wird der Rückgabewert der TSV-Datei angegeben, die von der Funktion open () gelesen wurde.
Darüber hinaus können Sie in Spalten den einzugebenden Spaltennamen angeben. Dies gilt auch für Tabellen mit Spalten vom seriellen Typ.
Recommended Posts