COPY tbl FROM STDIN;
pgAdmin no lo admite.
Obtiene un error de sintaxis simple porque Postgres obtiene los datos como código SQL.
Cuatro posibles soluciones:
INSERT
de varias filas en cambio:
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 valores como cadenas o literales numéricos.
Puede generar los datos con pg_dump
usando --inserts
. Relacionado:
- Exportar filas específicas de una tabla de PostgreSQL como secuencia de comandos INSERT SQL
psql
. Como usuario del sistema postgres
:
psql -f beer.sql -U my_login_role -d db_name
Base de datos (-d
) y función 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 utilizando un archivo por lotes con [plantilla], [codificación], [propietario] y un archivo .sql
Asegúrese de que haya un marcador de fin de datos (\.
) para el text
predeterminado 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 desde un archivo, ya que el fin del archivo sirve perfectamente; solo se necesita cuando se copian datos hacia o desde aplicaciones cliente usando el protocolo de cliente anterior a 3.0.
COPY .. FROM 'filename'
en su guión:
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 que tienen 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 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.)
\copy
. Ver:
- ¿Cómo actualizar filas seleccionadas con valores de un archivo CSV en Postgres?
- Cómo usar \copy en postgresql con pgadmin4