Exécutez la commande COPY en utilisant Psycopg de python

Objectif

Exécutez la commande COPY sur PostgreSQL avec python. Il existe une fonction copy_from dans psycopg, ce qui le rend très facile et facile à comprendre.

Environnement au moment de la rédaction de cet article

Bibliothèques requises

L'installation est également possible avec la commande PIP. Pour plus d'informations http://initd.org/psycopg/docs/install.html

Exemple de code source

Soumettez le fichier situé sur la machine exécutant python au format TSV à PostgreSQL.

copy_from.py


import psycopg2

try:
    #Connectez-vous à PostgreSQL
    conn = psycopg2.connect("dbname='Nom de la base de données' user='Nom d'utilisateur connexion' host='nom d'hôte' password='****'")
    cur = conn.cursor()
    conn.set_isolation_level(0)

    #Lecture des fichiers à soumettre à la base de données
    f = open('/Chemin du fichier/nom de fichier' mode='r' encoding='utf-8') #Si vous spécifiez le code de caractère, vous pouvez supprimer l'erreur au moment de COPY.

    #Exécution COPY
    cur.copy_from( f , 'nom de la table', sep='\t', null='\\N',columns=('Nom de colonne 1','Nom de colonne 2'))
      # sep='Type de caractère délimiteur: symbole TAB dans l'exemple'
      # null='Type de caractère nul: NULL dans l'exemple'
      #  columns=('')Répertoriez les noms de colonnes à saisir dans l'ordre et peuvent être omis si toutes les colonnes peuvent être saisies.

    conn.commit() #N'oubliez pas! !!
    f.close()
    print( "OK" )

except psycopg2.Error as e:
   print( "NG Copy error! ")
   print(  e.pgerror )

point

Comment utiliser la fonction copy_from de Psycopg

Le point de la fonction copy_from est le premier argument.

file – file-like object to read data from. It must have both read() and readline() methods.

Il semble qu'un fichier ou un objet comme un fichier doit avoir à la fois read () et readline () présents. Dans l'exemple de code, la valeur de retour du fichier TSV lu par la fonction open () est indiquée.

En outre, colums vous permet de spécifier le nom de la colonne à saisir, ce qui est également efficace pour les tables avec des colonnes de type série.

Recommended Posts

Exécutez la commande COPY en utilisant Psycopg de python
Écrivez automatiquement admin.py à l'aide de la commande admin_generator de django-extensions
[Python] Exécutons le module régulièrement en utilisant schedule
Exécutez Route53 sur la ligne de commande à l'aide de l'AWS-CLI.
[Linux] Exécutez périodiquement git pull avec la commande crontab
Exécuter une commande sur le serveur Web et afficher le résultat
Je veux automatiser ssh en utilisant la commande expect!
Comment exécuter une commande à l'aide d'un sous-processus en Python
À propos de la commande de service
Installez la commande pip
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Exécuter la commande depuis Python
Je veux automatiser ssh en utilisant la commande expect! partie 2
Copiez récursivement les fichiers du répertoire directement sous le répertoire en utilisant Python
Exécutons la commande à temps avec le bot discord
Vérifiez à l'avance ce qui se passe lorsque la commande est exécutée
Collez l'image dans un fichier Excel en utilisant l'openpyxl de Python
Exécutez une commande dans Go comme subprocess.call de Python (~, shell = True)