Comment puis-je copier à partir d'un fichier local vers une base de données distante dans PostgreSQL? [fermé]

9

Je suis novice en psql et j'ai besoin d'aide. Comment puis-je charger un CSV local dans une base de données distante?

J'utilise la commande suivante

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

mais cela recherche le fichier sur la base de données distante alors que je dois le faire sur mon PC local.

user22149
la source
4
\copylit un fichier local (c'est une psqlcommande et ne peut être utilisé que de l'intérieur psql). COPYcependant (notez le `` manquant '') lira le fichier sur le serveur.
a_horse_with_no_name
donc il n'y a aucun moyen pour cela? -je besoin de copier le fichier sur le serveur distant?
user22149
y a-t-il une différence de copie et \ copie? désolé, je suis vraiment nouveau dans psql, je ne connais que l'oracle, je peux le faire sans aucun problème
user22149
Eh bien la différence est que l'un lit le fichier sur le serveur et que l'autre lit le fichier sur le client. De toute évidence, la lecture du fichier sur le serveur sera plus rapide.
a_horse_with_no_name
1
@ user22149 Utilisez un onglet littéral ou E'\t'. Mais tab devrait être la valeur par défaut si vous ne spécifiez pas de délimitation de toute façon.
Craig Ringer

Réponses:

5

Il y a deux possibilités ici.

  1. Si vous utilisez psql, alors \ copy est la bonne façon de faire les choses comme vous le mentionnez.

  2. Si vous utilisez un programme client que vous avez créé, vous devez

    COPY FROM STDIN.....

Et puis insérez le fichier (voir la documentation sur la commande COPY .

La commande COPY est une bête légèrement étrange. C'est la seule commande que PostgreSQL supporte actuellement de Quel et donc elle est à la fois non standard et basée sur quelque chose d'un paradigme différent du reste des commandes. Pour cette raison, il est important de lire les documents relativement attentivement sur cette commande.

Chris Travers
la source