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.
L'installation est également possible avec la commande PIP. Pour plus d'informations http://initd.org/psycopg/docs/install.html
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 )
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