Führen Sie den Befehl COPY mit Psycopg of Python aus

Zweck

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.

Umgebung zum Zeitpunkt des Schreibens dieses Artikels

Erforderliche Bibliotheken

Die Installation ist auch mit dem Befehl PIP möglich. Weitere Informationen finden Sie unter http://initd.org/psycopg/docs/install.html

Beispielquellcode

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 )

Punkt

Verwendung der Funktion copy_from von Psycopg

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

Führen Sie den Befehl COPY mit Psycopg of Python aus
Schreiben Sie admin.py automatisch mit dem Befehl admin_generator von django-extensions
[Python] Lassen Sie uns das Modul regelmäßig nach Zeitplan ausführen
Führen Sie Route53 in der Befehlszeile mit AWS-CLI aus.
[Linux] Führen Sie git pull regelmäßig mit dem Befehl crontab aus
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Ich möchte ssh mit dem Befehl expected automatisieren!
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Über den Servicebefehl
Installieren Sie den Befehl pip
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter
Führen Sie den Befehl von Python aus
Ich möchte ssh mit dem Befehl expected automatisieren! Teil 2
Kopieren Sie mit Python rekursiv Dateien aus dem Verzeichnis direkt unter dem Verzeichnis
Lassen Sie uns den Befehl pünktlich mit dem Bot der Zwietracht ausführen
Überprüfen Sie im Voraus, was passiert, wenn der Befehl ausgeführt wird
Fügen Sie das Bild mit Pythons openpyxl in eine Excel-Datei ein
Führen Sie einen Befehl in Go wie Pythons subprocess.call aus (~, shell = True).