Saltar al contenido

En PostgreSQL, ¿cómo insertar datos con el comando COPIAR?

Ezequiel, parte de nuestro equipo de trabajo, nos ha hecho el favor de escribir este artículo ya que domina a la perfección el tema.

Solución:

COPY tbl FROM STDIN;

no es compatible con pgAdmin.
Obtiene un error de sintaxis simple porque Postgres obtiene los datos como código SQL.

cuatro soluciones posibles:

1. Usar una fila múltiple INSERT en lugar de:

INSERT INTO beer(name, tags, alcohol, brewery, id, brewery_id, image)
VALUES 
  ('Bons Voeux', 'blonde', 9.5, 'Brasserie Dupont', 250, 130, 'generic.png')
, ('Boerke Blond', 'blonde', 6.8, 'Brouwerij Angerik', 233, 287 'generic.png')
;

Tenga en cuenta la sintaxis diferente (SQL) para los valores como string o literales numéricos.

Puede generar los datos con pg_dump utilizando --inserts. Relacionado:

  • Exporte filas específicas de una tabla de PostgreSQL como secuencia de comandos INSERT SQL

2. O llama a tu script en la línea de comando usando psql. Como usuario del sistema postgres:

psql -f beer.sql -U my_login_role -d db_name 

base de datos (-d) y rol de inicio de sesión (-U para “Usuario”) se puede omitir si los valores predeterminados son correctos. Ejemplos de sintaxis:

  • Cree una base de datos de Postgres usando un archivo por lotes con [template],[encoding],[owner] y un archivo .sql

Asegúrese de que haya un marcador de fin de datos (.) por defecto text formato. (Tienes eso.) El manual:

El final de los datos se puede representar mediante una sola línea que contiene solo un punto de barra invertida (.). No es necesario un marcador de fin de datos cuando se lee de un archivo, ya que el fin del archivo sirve perfectamente; solo se necesita cuando se copian datos hacia o desde aplicaciones cliente utilizando el protocolo de cliente anterior a 3.0.

3. O mueva sus datos a un archivo separado en el servidor, diga ‘beer_data.csv’ y use COPY .. FROM 'filename' en tu guion:

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image)
FROM '/path/to/beer_data.csv';

Que funciona de cualquier manera. Sin embargo, necesita privilegios de superusuario. El manual:

[…] COPY Solo se permite nombrar un archivo o comando a los superusuarios de la base de datos o a los usuarios a los que se les otorga una de las funciones predeterminadas.
pg_read_server_files, pg_write_server_files, o
pg_execute_server_program, ya que permite leer o escribir cualquier archivo o ejecutar un programa al que el servidor tenga privilegios para acceder.

(pg_read_server_files, pg_write_server_files y pg_execute_server_program son nuevos en Postgres 11.)

4. O leer un archivo local al cliente con el metacomando psql copy. Ver:

  • ¿Cómo actualizar las filas seleccionadas con valores de un archivo CSV en Postgres?
  • Cómo usar copy en postgresql con pgadmin4

El primer paso es crear la base de datos. belgianbeers en pgAdmin.

Luego abra el indicador y ejecute psql -U postgres -d belgianbeers -a -f beers.sql

Esta línea de comando ejecuta e actualiza las tablas de la base de datos.

Nota: -U postgres = especifica postgres como nombre de usuario

Comentarios y puntuaciones del artículo

Nos puedes añadir valor a nuestro contenido informacional colaborando tu experiencia en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *