PostgreSQL COPIE de la déclaration
À l'aide de la COPIE de déclaration de PostgreSQL, vous pouvez charger des données à partir d'un fichier texte dans la base de données du tableau ci-dessous:
COPY CME_ERROR_CODES FROM E'C:\\Program Files\\ERROR_CODES\\errcodes.txt' DELIMITER AS '~'
La déclaration ci-dessus est exécuté à partir d'une machine qui a postgresql, où le client comme le serveur est dans une autre machine windows. L'exécution de la déclaration ci-dessus est de se plaindre de moi que ERROR: could not open file "C:\Program Files\ERROR_CODES\errcodes.txt" for reading: No such file or directory
.
Après quelques recherches, j'ai observé que COPY
déclaration est à la recherche pour le chargeur de fichier(errcodes.txt) dans le serveur postgresql de la machine sur le même chemin (C:\Program Files\ERROR_CODES). Pour tester cela , j'ai créer la même structure de dossier dans le serveur postgresql machine et gardé l'errcodes.txt fichier là. Ensuite, la COPIE de la déclaration a bien fonctionné. Il semble très difficile de contrainte pour moi, avec COPIE de la déclaration.
Est-il un réglage nécessaire pour éviter cela? ou c'est le comportement de la COPIE de la déclaration? Je n'ai pas trouver toutes les informations sur PostgreSQL documents.
- Où dans les documents avez-vous regarder? Le chapitre sur la la commande COPIER dans le manuel vous dit:
Files named in a COPY command are read or written directly by the server, not by the client application.
Vous devez vous connecter pour publier un commentaire.
voici la solution standard:
Les données doivent être échappées et séparées par des tabulations.
En fait, c'est dans les docs, même dans la grammaire définition que vous avez STDIN... Voir: http://www.postgresql.org/docs/9.1/static/sql-copy.html
Si vous êtes en utilisant un certain langage de programmation avec COPIE de soutien, vous aurez pg_putcopy ou fonction similaire. Si vous n'avez pas à vous inquiéter au sujet de l'évasion et de la concaténation.
Des conseils sur la façon de le faire manuellement en Python -> Recréer Postgres COPIER directement en Python?
Le Perl moyen -> http://search.cpan.org/dist/DBD-Pg/Pg.pm#COPY_support
Espère que cette aide.
De la la documentation
Citation:
COPIE avec un nom de fichier indique au serveur PostgreSQL pour directement lire ou d'écrire dans un fichier. Le fichier doit être accessible pour le serveur et le nom doit être spécifié du point de vue du serveur. Lorsque STDIN ou STDOUT est spécifié, les données sont transmises via la connexion entre le client et le serveur.
Si vous souhaitez copier à partir de la machine locale fichier sur un serveur à utiliser \commande de copie.
\copy
il signifie la méta-commande de lapsql
(terminal standard à base de front-end pour PostgreSQL).