¿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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.