sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Puedo crear automáticamente una tabla en PostgreSQL desde un archivo csv con encabezados?

Hay una herramienta muy buena que importa tablas a Postgres desde un archivo csv. Es una herramienta de línea de comandos llamada pgfutter (con binarios para Windows, Linux, etc.). Una de sus grandes ventajas es que también reconoce los nombres de atributo/columna.

El uso de la herramienta es simple. Por ejemplo, si desea importar myCSVfile.csv :

pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv

Esto creará una tabla (llamada myCSVfile ) con los nombres de columna tomados del encabezado del archivo csv. Además, los tipos de datos se identificarán a partir de los datos existentes.

Algunas notas:El comando pgfutter varía según el binario que use, p. podría ser pgfutter_windows_amd64.exe (cambie el nombre si tiene la intención de usar este comando con frecuencia). El comando anterior debe ejecutarse en una ventana de línea de comando (por ejemplo, en Windows ejecute cmd y asegúrese de pgfutter es accesible). Si desea tener un nombre de tabla diferente, agregue --table "myTable"; para seleccionar un esquema de base de datos en particular us --schema "mySchema" . En caso de que esté accediendo a una base de datos externa, use --host "myHostDomain" .

Un ejemplo más elaborado de pgfutter para importar myFile en myTable es este:

pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv

Lo más probable es que cambie algunos tipos de datos (de texto a numérico) después de la importación:

alter table myTable
  alter column myColumn type numeric
    using (trim(myColumn)::numeric)