2014-11-05 10 views
8

Sto cercando di importare un file .txt in PostgreSQL. Il file txt ha 6 colonne:ERRORE: dati mancanti per la colonna quando si utilizza copia in psql

Laboratory_Name Laboratory_ID Facility ZIP_Code  City State 

E 213 righe.

Sto cercando di utilizzare \copy per mettere i contenuti di questo file in una tabella denominata doe2 in PostgreSQL con il comando:

\copy DOE2 FROM '/users/nathangroom/desktop/DOE_inventory5.txt' (DELIMITER(' ')) 

Mi dà questo errore:

missing data for column "facility" 

I 'ho guardato tutto intorno per cosa fare quando si incontra questo errore e nulla ha aiutato. Qualcun altro l'ha incontrato?

+1

Che aspetto hanno i dati nel file? (Un valore di poche righe di campione.) – khampson

risposta

4

tre possibili cause:

  1. una o più linee del file ha solo 4 o meno caratteri di spazio (il vostro delimitatori).

  2. Uno o più caratteri di spazio sono stati sfuggiti (inavvertitamente). Forse con un backslash alla fine di un valore non quotato. Per il formato (di default) text si sta utilizzando, the manual explains:

    Backslash characters (\) can be used in the COPY data to quote data characters that might otherwise be taken as row or column delimiters.

uscita dal COPY TO o pg_dump non sarebbe esibire uno qualsiasi di questi errori durante la lettura di una tabella di corrispondenza con il layout. Ma forse il tuo file è stato modificato o proviene da una fonte diversa e difettosa?

  1. Non si sta utilizzando il file si si pensa si sta utilizzando. Il meta-comando \copy dell'interfaccia della riga di comando psql è un wrapper per COPY e legge i file locali sul client . Se il tuo file è presente sul server, utilizza invece il comando SQL COPY.
+0

Non penso sia il primo perché ho cambiato il mio delimitatore in "," e la stessa cosa è accaduta. Non penso che sia il secondo perché non ho una sola barra rovesciata nel mio intero file (ho fatto una ricerca con ctrl-F). Se è il terzo, non sono sicuro di come sistemarlo. Provo il comando COPY nella GUI pgadmin e ottengo questo errore: ERRORE: impossibile aprire il file "/users/nathangroom/desktop/DOE_inventory5.txt" per la lettura: Autorizzazione negata. Ho visto altrove su StackOverflow che l'utilizzo del comando \ copy nella shell dei comandi era la soluzione per quell'errore. – nathanmgroom

+0

@nathanmgroom: Dov'è il tuo file? Dov'è il server Postgres? Dov'è il tuo cliente? Inoltre, non è possibile modificare arbitrariamente il delimitatore. Deve essere quello usato nel tuo file. Cos'è questo? L'impostazione predefinita è un carattere di tabulazione in formato testo. –

+0

Il file è sul mio desktop, non so esattamente dove si trovano il server Postgres e il client, ma so che è tutto locale, sulla mia macchina. Il server dice che è localhost 5432. L'ho provato di nuovo dopo averlo salvato come csv e ho ricevuto questo errore: ERRORE: sintassi dell'input non valida per intero: "Laboratory_ID" Che non ha senso perché c'è sicuramente un numero intero in quella colonna. – nathanmgroom

Problemi correlati