Utilizzo di COPIA DA STDIN in postgres


14

Ho appena iniziato a usare Postgres e sto provando a creare un db di esempio per comprenderne le funzioni, guardandomi intorno, ho trovato degli script in pgfoundry.org. Comprendo i comandi, poiché in precedenza avevo usato sia Oracle che MS-SQL, ma tutti gli script che eseguo restituiscono errori quando raggiungono l'istruzione "COPIA DA". Più precisamente, l'errore viene generato nel primo elemento che deve essere inserito nella tabella indicata.

Ho provato a eseguire gli script sia come query che come pgScripts, ma in entrambi i modi ricevo un errore nella prima riga dopo COPY FROM.

Sto usando pgAdminIII e ho usato StackBuilder per installare PostgreSQL 9.2.4.1 come driver DB. Potrei mancare alcune configurazioni di base che mi impediscono di eseguire questo comando, o semplicemente non ho capito come funzionano?

EDIT:
l'errore è:

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`

dove si trova il testo:

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
Benvenuti in dba.SE. È necessario includere il (testualmente) messsage errore con una domanda del genere. Se le impostazioni internazionali non sono in inglese, è possibile reimpostarle nella sessione prima di eseguire lo script per ottenere i messaggi di errore inglesi predefiniti: SET lc_messages = Cbasta eseguirlo nella finestra dell'editor SQL, che "contiene" una sessione.
Erwin Brandstetter,

Grazie, sto cercando di capire come cambiare la mia lingua, includerò il messaggio di errore non appena avrò capito come farlo.
Eugenio Laghi,

1
Ah, dimenticavo apici: SET lc_messages = 'C'.
Erwin Brandstetter,

Risposte:


10

pgScript è un'estensione di script locale di pgAdmin, che molto probabilmente non si desidera qui.

pgAdmin è una GUI, non un'applicazione console: non è stdinpossibile utilizzarla facilmente. Se devi stdineseguire lo streaming dei tuoi contenuti, usa psql, che è un'applicazione console - con il \copymeta-comando di psql .

Se hai un file (cosa che ovviamente fai), basta usare SQL COPYda pgAdmin:

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

Il file deve essere leggibile per l' postgresutente del sistema.

Maggiori informazioni in questa richiesta strettamente correlata all'elenco di supporto di pgAdmin .


ok, vuoi dire che dovrei eseguire lo script con una riga come psql postgres -p 5432 -f C:\Users\usernexus\Desktop\database05-12-2012.sql:? Inoltre, sto solo provando tutto a livello locale, ho appena installato pgAdmin sul mio laptop.
Eugenio Laghi,

1
@EugenioLaghi: Non esattamente. psql -feseguirà un file di script SQL. Sembra che tu abbia a che fare con un file di dati . Ho aggiornato la mia risposta.
Erwin Brandstetter,

GRAZIE! All'inizio stavo cercando di eseguire uno script, ma ora almeno ho capito come COPIARE i dati da un file! Ieri sera ero troppo stanco per capire .. :)
Eugenio Laghi,

Come posso assicurarmi che l'utente postgres possa leggere il file. L'ho fatto accadere per il file txt, anche per il mio desktop (dove si trova il file), ma l'autorizzazione è ancora negata.

@Geo: Inizia una nuova domanda tra cui la versione di Postgres, il sistema operativo, dove si trova il file, il comando testuale che hai usato e altro se pertinente ...
Erwin Brandstetter
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.