2010-08-30 10 views
1

J'ai besoin de charger un gros fichier dans PostgreSQL. J'utiliserais normalement la commande COPY, mais ce fichier doit être chargé à partir d'un ordinateur client distant. Avec MSSQL, je peux installer les outils locaux et utiliser bcp.exe sur le client pour me connecter au serveur.Chargement en masse dans PostgreSQL à partir d'un client distant

Existe-t-il un moyen équivalent pour PostgreSQL? Sinon, quelle est la méthode recommandée pour charger un fichier volumineux à partir d'un ordinateur client si je ne peux pas copier le fichier sur le serveur en premier?

Merci.

Répondre

3

COPY La commande est prise en charge dans PostgreSQL Protocol v3.0 (Postgresql 7.4 ou plus récent).

La seule chose que vous devez utiliser COPY d'un client à distance est un libpq client activé tels que psql ligne de commande utilitaire.

de la course client à distance:

$ psql -d dbname -h 192.168.1.1 -U uname < yourbigscript.sql 
2

Vous peut utiliser la commande \copy de l'outil psql comme:

psql -h IP_REMOTE_POSTGRESQL -d DATABASE -U USER_WITH_RIGHTS -c "\copy 
    TABLE(FIELD_LIST_SEPARATE_BY_COMMA) from 'FILE_IN_CLIENT_MACHINE(MAYBE IN THE SAME 
DIRECTORY)' with csv header" 
0

utilisez la commande de \copypsql pour charger les données en m²:

$ psql -h <IP> -p <port> -U <username> -d <database> 

database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' delimiter as '|' 

database# \copy schema.tablename from '/home/localdir/bulkdir/file.txt' with csv header