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)