ventajas español desventajas database postgresql database-design insert tsv

database - español - mongodb



Insertar archivos `tsv` en db postgresql (4)

Es triste decirlo, pero la forma más fácil es convertir el TSV a un CSV. La mayoría de las utilidades de importación incorporadas en Postgres para hacer cosas como convertir cadenas vacías en nulas, omitir encabezados, etc. son solo para CSV .

Vea esta simple respuesta de Python de 6 líneas en SO . Lo uso y luego CSV se carga como siempre sin problemas en Postgres después de intentar una hora para cargar un TSV.

Tengo varios archivos que se guardan como tsv. Quiero insertarlos en una postgresql , para analizarlos con sql.

Sin embargo, mi problema es cómo INSERT estos archivos tsv en postgresql 9.2 en windows 7 ?

¡Aprecio tu respuesta!

PS .: He creado la tabla con los valores correctos como:

CREATE TABLE ratings (distribution VARCHAR, votes VARCHAR, rank FLOAT, title VARCHAR);

el archivo está en el directorio:

C:/Users/testUser/Desktop/TSV/ratings.list.tsv



Puedo hacer esto con csvsql desde csvkit .

Para leer un TSV (o CSV) y crearlo / insertarlo en una tabla, mi secuencia de comandos de línea de comandos se ve así:

csvsql --insert input.tsv --table table_t --tabs --no-constraints --db postgresql://user:passwd@localhost/mydb


Quieres algo como esto:

COPY ratings FROM ''C:/Users/testUser/Desktop/TSV/ratings.list.tsv'' DELIMITER E''/t'';

Se requiere la E''/t'' , de lo contrario obtendrá un error como este:

ERROR: DELIMITADOR para COPIA debe ser un solo carácter de un byte

Si las columnas en su TSV no se alinean perfectamente con su tabla, también puede definir la asignación haciendo lo siguiente:

COPY ratings (column_1, column_2, ... column_n) FROM ''C:/Users/testUser/Desktop/TSV/ratings.list.tsv'' DELIMITER E''/t'';