Postgresde STDIN'DAN KOPYA Kullanımı


14

Sadece Postgres kullanmaya başladım ve işlevlerini anlamak için örnek bir db oluşturmaya çalışıyorum, etrafa bakın, pgfoundry.org'da bazı komut dosyaları buldum. Daha önce hem Oracle hem de MS-SQL kullandığım için komutları anlıyorum, ancak çalıştırdığım tüm komut dosyaları "KOPYA FROM" komutuna ulaştıklarında hata veriyor. Daha kesin olarak, hata, verilen tabloya eklenmesi gereken ilk öğeye atılır.

Komut dosyalarını hem sorgular hem de pgScripts olarak çalıştırmayı denedim, ancak her iki şekilde de COPY FROM'dan sonraki ilk satırda bir hata alıyorum.

PgAdminIII kullanıyorum ve PostgreSQL 9.2.4.1 bir DB sürücüsü olarak yüklemek için StackBuilder kullandım. Bu komutu çalıştırmamı engelleyen bazı temel yapılandırmaları kaçırıyor olabilir miyim, yoksa sadece çalışma şeklini anlamadım mı?

EDIT:
Hata:

ERROR:  syntax error at or near "7"
LINE 5600: 7 4 13 37 2012-03-10 16:41:43.797787 2012-03-10 16:41:43.797...
           ^

********** Error **********

ERROR: syntax error at or near "7"
SQL status: 42601
Char: 140891`

metnin olduğu yer:

COPY action_abilitations (id, group_action_id, partecipation_role_id, group_id, created_at, updated_at) FROM stdin;
7   4   13  37  2012-03-10 16:41:43.797787  2012-03-10 16:41:43.797787`

1
Dba.SE'ye hoş geldiniz. Bunun gibi bir soruyla (verbatim) hata mesajını eklemeniz gerekir . Yerel ayarınız İngilizce değilse, varsayılan İngilizce hata iletilerini almak için komut dosyasını çalıştırmadan önce oturumunuzda sıfırlayabilirsiniz: SET lc_messages = CYalnızca bir oturum "içeren" SQL düzenleyici pencerenizde çalıştırın.
Erwin Brandstetter

Teşekkürler, yerel ayarımı nasıl değiştireceğimi anlamaya çalışıyorum, bunu nasıl yapacağımı anladığımda hata mesajını ekleyeceğim.
Eugenio Laghi

1
Tek tırnakları unuttum SET lc_messages = 'C'.
Erwin Brandstetter

Yanıtlar:


10

pgScript büyük olasılıkla do pgAdmin yerel senaryo uzantısıdır değil burada istiyorum.

pgAdmin bir konsol uygulaması değil, bir GUI'dir - stdinkolayca kullanabileceğiniz bir şey yoktur . Eğer gerekiyorsa stdinile - bir konsol uygulaması içerik, kullanım psql'i, akarsu \copypsql'den meta komuta .

Dosyanız varsa (ki bunu yaptığınız açıktır), sadece COPYpgAdmin'den SQL kullanın :

COPY action_abilitations (id, group_action_id, ...)
FROM 'C:\Users\usernexus\Desktop\database05-12-2012.sql';

Dosyanın postgressistem kullanıcısı tarafından okunabilir olması gerekir .

PgAdmin destek listesine bu yakından ilgili istek hakkında daha fazla bilgi .


tamam, yani sen script gibi bir çizgi ile çalıştırmak gerekir demek psql postgres -p 5432 -f C:\Users\usernexus\Desktop\database05-12-2012.sql? Ayrıca, sadece her şeyi yerel olarak deniyorum, dizüstü bilgisayarıma pgAdmin'i yeni yükledim.
Eugenio Laghi

1
@EugenioLaghi: Tam olarak değil. psql -fbir SQL komut dosyası yürütür. Bir veri dosyasıyla ilgileniyor gibisiniz. Cevabımı güncelledim.
Erwin Brandstetter

TEŞEKKÜRLER! Başlangıçta bir komut dosyası çalıştırmaya çalışıyordum, ama şimdi en azından bir dosyadan verileri nasıl kopyalayacağımı anladım! Dün akşam anlamak için çok yorgundum .. :)
Eugenio Laghi

Postgres kullanıcısının dosyayı okuyabildiğinden nasıl emin olabilirim? Bunu txt dosyası için bile yaptım, hatta masaüstüm için (dosyanın bulunduğu yer), ancak izin hala reddedildi.

@ Geo: Lütfen Postgres sürümü, işletim sistemi, dosyanın bulunduğu yer, kullandığınız sözlü komut ve ilgili ise daha fazlasını içeren yeni bir soru başlatın ...
Erwin Brandstetter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.