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)