2015-08-28 24 views
8

1 proje NodeJs PostgreSQL veritabanı ile çalışırken sorunum var. COPY komutunu kullanarak pgAdmin'e veri eklemeye çalışırken hata yaşıyorum.PostgreSQL'de, COPY komutu ile veri nasıl eklenir?

COPY beer (name, tags, alcohol, brewery, id, brewery_id, image) FROM stdin; 

Bons Voeux blonde 9.5 Brasserie Dupont 250 130 generic.png 

Bu veriler gist içinde:

Bu hata:

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

I was create database like this and execute file .sql:

+0

Bu tür bir hata, kullandığınız veritabanı çerçevesinin türüne bağlıdır. Sorunuza böyle bir ayrıntı eklemelisiniz. –

+0

@ vitaly-t, gif dosyası yöntemini 1 veritabanı oluşturuyordum ve beers.sql dosyasını çalıştırıyordum ama hata var. –

+0

Lütfen bana yardım edin. –

cevap

12
COPY tbl FROM STDIN;

pgAdmin tarafından desteklenmez.
Düz bir sözdizimi hatası alıyorsunuz çünkü Postgres, verileri SQL kodu olarak alıyor.

üç çözümler:

1. kullanımı yerine, çok sıralı INSERT:

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') 
; 

Not dize veya sayısal olarak farklı değerler (SQL) sözdizimi değişmezleri.

Verileri pg_dump using --inserts ile oluşturabilirsiniz.

2. Ya psql kullanarak komut satırında Senaryonu arayın: İlgili. sistem kullanıcısı postgres gibi:

psql beer -f beer.sql 

varsayılan text biçimi için bir sonu verilerine işaretleyici (\.) olduğundan emin olun. The documentation:

End of data can be represented by a single line containing just backslash-period (\.). An end-of-data marker is not necessary when reading from a file, since the end of file serves perfectly well; it is needed only when copying data to or from client applications using pre-3.0 client protocol.

3. (Sen. O var) Ya ayrı bir dosyaya veri taşımak (sunucuya yerel!), 'beer_data.csv' demek ve komut COPY .. FROM 'filename' kullanmak : her iki şekilde çalışır

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

.

+2

'pg_dump --inserts> dump.sql' bunu benim için yaptı, teşekkürler! –

1

İlk adım:

pgAdmin üzerinde Veritabanı belgianbeers oluşturun.

İkinci adım: Açık istemi ve bu komut satırını çalıştırarak:

psql'in -U postgres -d belgianbeers -a -f bira.sql

Bu komut satırı, e güncelleme veritabanı tablolarını çalıştıran.

-U = kullanıcı adı postgres

İlgili konular