examples ejemplo postgresql pgadmin bulk-load postgresql-copy

examples - copy postgresql ejemplo



En PostgreSQL, ¿cómo insertar datos con el comando COPY? (2)

Tengo un problema cuando ejecuto 1 proyecto NodeJs con la base de datos PostgreSQL. Tengo un error al intentar insertar datos en pgAdmin usando el comando COPY .

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin; Bons Voeux blonde 9.5 Brasserie Dupont 250 130 generic.png

Estos datos en la gist :

Este error:

ERROR: syntax error at or near "Bons" SQL state: 42601 Character: 1967


Primer paso:

Crear la base de datos belgianbeers en pgAdmin.

Segundo paso: abre el indicador y ejecuta esta línea de comando:

psql -U postgres -d belgianbeers -a -f beers.sql

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

-U = nombre de usuario postgres


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 posibles soluciones:

1. Utilice un INSERT varias filas en su lugar:

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 diferente sintaxis (SQL) para los valores como cadenas o literales numéricos.

Puedes generar los datos con pg_dump usando --inserts . Relacionado:

2. O llame a su 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

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

Asegúrese de que haya un marcador de fin de datos ( /. ) Para el formato de text predeterminado. (Tienes eso). El manual:

El final de los datos se puede representar mediante una sola línea que contiene solo el período de barra invertida ( /. ). No es necesario un marcador de fin de datos cuando se lee de un archivo, ya que el final del archivo funciona perfectamente bien; solo se necesita al copiar datos desde o hacia las 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 su script:

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

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

[...] COPY nombrar un archivo o comando solo se permite a los superusuarios de la base de datos o a los usuarios a los que se les otorga uno de los roles predeterminados 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 que el servidor tiene Privilegios de acceso.

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

4. O lea un archivo local para el cliente con el meta-comando psql /copy . Ver: