2011-03-08 44 views

Respuesta

9

El La versión ligeramente modificada de COPY a continuación funcionó mejor para mí, donde especifico el formato CSV. Este formato trata los caracteres de barra invertida en el texto sin ningún problema. El formato predeterminado es el algo peculiar TEXT.

COPY myTable FROM '/path/to/file/on/server' (FORMAT CSV, DELIMITER('|')); 
+1

Si está utilizando 'psql' y el archivo está en una ubicación a la que no puede acceder * server * (pero solo para el cliente), use exactamente el mismo comando, excepto que comience con '\ copy'. – Wildcard

+0

para aquellos que desean omitir la primera línea del archivo CSV, use la opción ENCABEZAR, como en 'COPY myTable FROM'/ruta/a/archivo/en/servidor '(FORMAT CSV, DELIMITER (' | '), HEADER) ; ' – CodePlumber

11

Let consideran que sus datos están en el archivo values.txt y que desea importar en la tabla de base de datos myTable continuación, la siguiente consulta hace el trabajo

COPY myTable FROM 'value.txt' (DELIMITER('|')); 

https://www.postgresql.org/docs/current/static/sql-copy.html

+2

Se necesita comillas alrededor del nombre de archivo/ruta de archivo. ¿Podría actualizar su respuesta con 'COPY myTable FROM 'value.txt' (DELIMITER ('|'));' – daemon12

2

Hay Pgloader que utiliza el comando antes mencionado COPY y que puede cargar datos desde CSV (y MySQL, SQLite y dBase). También utiliza hilos separados para leer y copiar datos, por lo que es bastante rápido (curiosamente, se escribió de Python a Common Lisp y obtuvo una ganancia de velocidad de 20 a 30x, ver blog post).

para cargar el archivo CSV que se necesita para escribir un archivo de configuración poco, como

LOAD CSV 
    FROM 'path/to/file.csv' (x, y, a, b, c, d) 
    INTO postgresql:///pgloader?csv (a, b, d, c) 
    … 
Cuestiones relacionadas