Postgres COPIE DE fichier csv - Aucun fichier ou répertoire
J'essaie d'importer un (plutôt grand) .fichier txt dans une table de geonames dans PostgreSQL 9.1. Je suis dans le /~ répertoire de mon serveur, avec un fichier nommé US.txt placés dans ce répertoire. J'ai mis le search_path
variable geochat, le nom de la base de données, je suis en train de travailler. J'ai ensuite entrer dans cette requête:
COPY geonames
FROM 'US.txt',
DELIMITER E'\t',
NULL 'NULL');
Je puis recevoir ce message d'erreur:
ERROR: could not open file "US.txt" for reading: No such file or directory.
Ce que je dois taper dans \i US.txt
ou quelque chose de similaire en premier, ou faut-il juste obtenir à partir du présent répertoire de travail?
OriginalL'auteur nerdenator | 2013-05-17
Vous devez vous connecter pour publier un commentaire.
Un couple d'idées fausses:
1.
Il n'y a pas de répertoire
/~
. C'est soit/
(répertoire racine) ou~
(répertoire home de l'utilisateur courant). Il est également pertinent pour le problème.2.
La
search_path
n'a rien à voir avec le nom de la base de données. C'est pour schémas à l'intérieur de la base de données actuelle. Vous avez probablement besoin de le réinitialiser.3.
Vous êtes tenus d'utiliser le chemin absolu pour votre fichier. Comme l'a documenté dans le manuel ici:
4.
SÉPARATEUR: juste du bruit.
5.
NULL: C'est plutôt rare d'utiliser la chaîne
'NULL'
pour unNULL
valeur. Êtes-vous sûr?Je pense (après la réinitialisation
search_path
- vous au schéma qualifier le nom de la table):An input file name can be an absolute or relative path
postgresql.org/docs/current/interactive/sql-copy.html Mais il n'a vraiment pas l'air de fonctionner avec des chemins relatifs.OriginalL'auteur Erwin Brandstetter
Peut-être un peu tard, mais je l'espère utile:
Utiliser \copie à la place de
https://wiki.postgresql.org/wiki/COPY
jvdw
OriginalL'auteur jvdw
Les chemins sont relatifs au serveur PostgreSQL, pas la
psql
client.En supposant que vous êtes l'exécution de PostgreSQL 9.4, vous pouvez mettre
US.txt
dans le répertoire/var/lib/postgresql/9.4/main/
.OriginalL'auteur Masten SG
si vous êtes en cours d'exécution de votre commande de COPIE à partir d'un script, vous pouvez avoir une étape dans le script qui crée une COPIE de la commande avec le bon chemin d'accès absolu.
vous pouvez ensuite exécuter cette partie dans un fichier et de l'exécuter
OriginalL'auteur bodman