¿Cómo puedo escribir un procedimiento almacenado que importe datos de un archivo CSV y complete la tabla?
postgresql
csv
postgresql-copy
vardhan
fuente
fuente
Respuestas:
Echa un vistazo a este breve artículo .
Solución parafraseada aquí:
Crea tu mesa:
Copie los datos de su archivo CSV a la tabla:
fuente
COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER;
postgresql.org/docs/9.1/static/sql-copy.htmlSi no tiene permiso para usar
COPY
(que funciona en el servidor db), puede usar\copy
en su lugar (que funciona en el cliente db). Usando el mismo ejemplo que Bozhidar Batsov:Crea tu mesa:
Copie los datos de su archivo CSV a la tabla:
También puede especificar las columnas para leer:
Consulte la documentación para COPIA :
y nota:
fuente
COPY
y\copy
es mucho más que solo permisos, y no puede simplemente agregar un `` para que funcione mágicamente. Consulte la descripción (en el contexto de la exportación) aquí: stackoverflow.com/a/1517692/157957Una forma rápida de hacerlo es con la biblioteca de pandas de Python (la versión 0.15 o superior funciona mejor). Esto manejará la creación de las columnas por usted, aunque obviamente las elecciones que hace para los tipos de datos podrían no ser lo que desea. Si no hace lo que quiere, siempre puede usar el código 'crear tabla' generado como plantilla.
Aquí hay un ejemplo simple:
Y aquí hay un código que le muestra cómo configurar varias opciones:
fuente
if_exists
parámetro se puede configurar para reemplazar o agregar a una tabla existente, por ejemplodf.to_sql("fhrs", engine, if_exists='replace')
df.to_sql()
es realmente lento, puedes usarlod6tstack.utils.pd_to_psql()
desde d6tstack ver comparación de rendimientoTambién puede usar pgAdmin, que ofrece una GUI para importar. Eso se muestra en este hilo SO . La ventaja de usar pgAdmin es que también funciona para bases de datos remotas.
Sin embargo, al igual que las soluciones anteriores, ya debería tener su tabla en la base de datos. Cada persona tiene su propia solución, pero lo que generalmente hago es abrir el archivo CSV en Excel, copiar los encabezados, pegar especiales con transposición en una hoja de trabajo diferente, colocar el tipo de datos correspondiente en la siguiente columna y luego copiarlo y pegarlo en un editor de texto junto con la consulta de creación de la tabla SQL adecuada de la siguiente manera:
fuente
La mayoría de las otras soluciones aquí requieren que cree la tabla por adelantado / manualmente. Esto puede no ser práctico en algunos casos (por ejemplo, si tiene muchas columnas en la tabla de destino). Entonces, el siguiente enfoque puede ser útil.
Al proporcionar la ruta y el recuento de columnas de su archivo csv, puede usar la siguiente función para cargar su tabla en una tabla temporal que se denominará como
target_table
:Se supone que la fila superior tiene los nombres de columna.
fuente
public
)Como mencionó Paul, la importación funciona en pgAdmin:
haga clic derecho en la tabla -> importar
seleccionar archivo local, formato y codificación
Aquí hay una captura de pantalla alemana pgAdmin GUI:
algo similar que puede hacer con DbVisualizer (tengo una licencia, no estoy seguro acerca de la versión gratuita)
haga clic derecho en una tabla -> Importar datos de tabla ...
fuente
fuente
crear una tabla primero
Luego use el comando copiar para copiar los detalles de la tabla:
copie nombre_tabla (C1, C2, C3 ....)
de 'ruta a su archivo csv' delimitador ',' encabezado csv;
Gracias
fuente
Usa este código SQL
la palabra clave de encabezado le permite al DBMS saber que el archivo csv tiene un encabezado con atributos
para más información visite http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
fuente
Experiencia personal con PostgreSQL, aún esperando una forma más rápida.
1. Cree el esqueleto de la tabla primero si el archivo se almacena localmente:
2. Cuando \ path \ xxx.csv está en el servidor, postgreSQL no tiene permiso para acceder al servidor, deberá importar el archivo .csv a través de la funcionalidad integrada pgAdmin.
Haga clic derecho en el nombre de la tabla, elija importar.
Si aún tiene problemas, consulte este tutorial. http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
fuente
¿Cómo importar datos de archivos CSV en una tabla PostgreSQL?
pasos:
Necesita conectar la base de datos postgresql en la terminal
Necesito crear una base de datos
Necesito crear usuario
Conectar con la base de datos
Necesito crear un esquema
Necesito crear tabla
Importar datos de archivos csv a postgresql
Encuentra los datos de la tabla dada
fuente
En mi humilde opinión, la forma más conveniente es seguir " Importar datos CSV en postgresql, la forma cómoda ;-) ", utilizando csvsql de csvkit , que es un paquete de Python instalable a través de pip.
fuente
En Python, puede usar este código para la creación automática de tablas PostgreSQL con nombres de columna:
También es relativamente rápido, puedo importar más de 3.3 millones de filas en aproximadamente 4 minutos.
fuente
También puede usar pgfutter o, mejor aún, pgcsv .
pgfutter es bastante defectuoso, recomendaría pgcsv.
Aquí se explica cómo hacerlo con pgcsv:
fuente
Si necesita un mecanismo simple para importar texto / analizar CSV multilínea, puede usar:
DBFiddle Demo
fuente
DBeaver Community Edition (dbeaver.io) hace que sea trivial conectarse a una base de datos, luego importar un archivo CSV para cargarlo en una base de datos PostgreSQL. También facilita la emisión de consultas, la recuperación de datos y la descarga de conjuntos de resultados a CSV, JSON, SQL u otros formatos de datos comunes.
Es una herramienta de base de datos multiplataforma FOSS para programadores SQL, DBA y analistas que admite todas las bases de datos populares: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, etc. Es un competidor viable de FOSS para TOAD para Postgres, TOAD para SQL Server o Toad para Oracle.
No tengo afiliación con DBeaver. Me encanta el precio (¡GRATIS!) Y la funcionalidad completa, pero desearía que abrieran más esta aplicación DBeaver / Eclipse y facilitaran agregar widgets de análisis a DBeaver / Eclipse, en lugar de exigir a los usuarios que paguen la suscripción anual de $ 199 solo para crear gráficos y cuadros directamente dentro de la aplicación. Mis habilidades de codificación de Java están oxidadas y no tengo ganas de tomarme semanas para volver a aprender a construir widgets de Eclipse (solo para descubrir que DBeaver probablemente ha deshabilitado la capacidad de agregar widgets de terceros a DBeaver Community Edition).
¿Pueden los usuarios avanzados de DBeaver que son desarrolladores de Java proporcionar alguna información sobre los pasos para crear widgets de análisis para agregar a la Edición comunitaria de DBeaver?
fuente
Cree una tabla y tenga las columnas necesarias que se utilizan para crear la tabla en el archivo csv.
Abra postgres y haga clic derecho en la tabla de destino que desea cargar y seleccione importar y actualice los siguientes pasos en la sección de opciones de archivo
Ahora busque su archivo en nombre de archivo
Seleccione csv en formato
Codificación como ISO_8859_5
Ahora ir a misceláneos opciones y verifique el encabezado y haga clic en importar.
fuente
Creé una pequeña herramienta que importa
csv
archivos en PostgreSQL súper fácil, solo un comando y creará y completará las tablas, desafortunadamente, en este momento, todos los campos creados automáticamente usan el tipo TEXTLa herramienta se puede encontrar en https://github.com/eduardonunesp/csv2pg
fuente
psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"
? Supongo que la parte donde crea la tabla es agradable, pero como cada campo es texto, no es súper útil