¿Cómo puedo copiar desde un archivo local a una base de datos remota en PostgreSQL? [cerrado]

9

Soy un novato en psql y necesito ayuda. ¿Cómo puedo cargar un CSV local en una base de datos remota?

Estoy usando el siguiente comando

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

pero esto busca el archivo en la base de datos remota mientras necesito hacerlo en mi PC local.

usuario22149
fuente
44
\copylee un archivo local (es un psqlcomando y solo se puede usar desde adentro psql). COPYsin embargo (tenga en cuenta que la falta ``) leerá el archivo en el servidor.
a_horse_with_no_name
¿Entonces no hay forma de hacerlo? Necesito copiar el archivo en el servidor remoto?
user22149
¿Hay alguna diferencia en copiar y \ copiar? lo siento realmente nuevo en psql sólo sé oráculo no puedo hacer esto sin ningún problema
user22149
Bueno, la diferencia es que uno lee el archivo en el servidor y el otro está leyendo el archivo en el cliente. Obviamente, leer el archivo en el servidor será más rápido.
a_horse_with_no_name
1
@ user22149 Utilice una pestaña literal o E'\t'. Pero la pestaña debería ser la predeterminada si no especifica un delim de todos modos.
Craig Ringer el

Respuestas:

5

Hay dos posibilidades aquí.

  1. Si está utilizando psql, entonces \ copy es la forma correcta de hacer las cosas como usted menciona.

  2. Si está utilizando un programa cliente que ha creado, entonces necesita

    COPY FROM STDIN.....

Y luego alimente el archivo (consulte la documentación sobre el comando COPIAR) .

El comando COPIAR es una bestia un poco extraña. Es el único comando que PostgreSQL admite actualmente de Quel, por lo que no es estándar y se basa en un paradigma diferente al resto de los comandos. Por esta razón, es importante leer los documentos con relativa atención en este comando.

Chris Travers
fuente