J'essaie d'importer un fichier CSV dans une base de données via la commande "COPY"; cependant, j'obtiens l'erreur (ce qui semble courant) dont j'ai besoin pour être un superutilisateur et que je dois utiliser "\ copy" à la place. Cependant, lorsque j'utilise \ copy, j'obtiens une erreur de syntaxe:
ERROR: syntax error at or near "\"
LINE 1: \copy
Avec le curseur pointant vers "\". Voici ma requête:
\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'
J'ai essayé à la fois "copier" et "\ copier". Le premier me donnant une erreur de superutilisateur le second me donnant cette erreur de syntaxe. Une idée sur la façon de le réparer? fais-le fonctionner?
J'exécute la commande via le champ de saisie sql de myPgAdmin.
La seule autre question que je me pose concerne l'importation des colonnes via tablename (column2, column3 et ainsi de suite. Est-ce la bonne syntaxe pour cela?
la source
Veuillez vous référer au manuel postgres pour COPY .
Dans pgAdmin (ou la chaîne sql que vous passez via un script ou une autre connexion db), vous utiliseriez simplement COPY sans préfixe "\".
alors entrez quelque chose comme:
COPY tablename....
Vous devez vous assurer que vous disposez des privilèges appropriés pour exécuter la commande, dans ce cas, vous devez être en mesure de vous connecter à la base de données et d'avoir un accès en écriture à «nom de table». Postgres doit également pouvoir accéder au fichier, donc le chemin / home / uploads / doit être accessible sur le serveur de base de données et l'utilisateur postgres doit pouvoir lire le fichier - vérifiez les autorisations sur le fichier et le répertoire.
la source
Sur mon système 9.1, l'erreur que j'obtiens est assez informative:
Si vous relisez attentivement le conseil, il indique que vous pouvez copier à partir de stdin. C'est ce que \ copy dans psql fait réellement dans le back-end. Voir les documents sur http://www.postgresql.org/docs/8.3/static/sql-copy.html pour plus d'informations.
Vous pouvez ensuite mettre le corps de la copie dans votre requête ou du moins c'est ainsi que cela fonctionne dans psql.
la source
Voilà comment je le fais dans pgAdmin3. Mais vérifiez soigneusement les droits, parfois les droits sont le problème. (postgres utilisateur sur filename.txt / chmod 777)
la source
Une autre méthode consiste à créer une vue pour la requête SQL. Utilisez ensuite la commande \ copy.
la source