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 predeterminadospg_read_server_files
,pg_write_server_files
, opg_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: