Come ignorare gli errori con psql \copia meta-comando

Sto usando psql con un database PostgreSQL e seguenti copy comando:

\COPY isa (np1, np2, sentence) FROM 'c:\Downloads\isa.txt' WITH DELIMITER '|'

:

ERROR:  extra data after last expected column

Come faccio a saltare le righe con errori?

OriginaleL’autore Superdooperhero | 2016-04-14

One Reply
  1. 12

    Non è possibile ignorare gli errori senza saltare l’intero comando fino a e includendo Postgres 9.5. Attualmente non c’è più sofisticati per la gestione degli errori.

    \copia è solo un wrapper di SQL COPIA che i canali di risultati attraverso psql. Il manuale per COPY:

    COPY ferma l’operazione al primo errore. Ciò non deve portare a
    problemi in caso di COPY TO, ma la tabella di destinazione già
    hanno ricevuto in precedenza righe in un COPY FROM. Queste righe non essere
    visibile o accessibile, ma che ancora occupano spazio su disco. Questo potrebbe
    quantità di una notevole quantità di spazio su disco se il guasto
    è successo pure in una grande operazione di copia. Si potrebbe desiderare di richiamare
    VACUUM per recuperare lo spazio sprecato.

    Grassetto, sottolineatura mia. E:

    COPY FROM viene generato un errore se ogni riga del file di input contiene
    più o meno colonne di quanto previsto.

    C’era un il tentativo di aggiungere un errore di registrazione di COPIA in Postgres 9.0, promossa da Aster Dati, ma non è mai stato commesso. L’azienda è stata in seguito acquisita da Teradata, così ho i miei dubbi sono ancora perseguire il progetto.

    Soluzione

    Risolvere il tuo file di input, invece.

    Se si dispone di uno o più ulteriori colonna nel file di input e il file è altrimenti coerente, si potrebbe aggiungere il manichino colonne alla tabella isa e rilasciare quelli dopo. O (cleaner con tavoli per la produzione l’importazione di una tabella di gestione temporanea e INSERT colonne selezionate (o espressioni) per la vostra tabella di destinazione isa.

    Relative risposte, con istruzioni dettagliate:

    Se posso aggiungere ulteriori colonne della tabella è possibile utilizzare qualcosa di simile al mio comando originale (con le colonne aggiuntive) o ho bisogno di altre opzioni per l’invio facoltativo colonne?
    Mi esce: ERRORE: dati mancanti per la colonna “dummy1”
    Tali colonne, così come in altre colonne, per quanto COPY è interessato. I tuoi “dati mancanti” errore indica che il file di input è incoerente o non si utilizza il separatore corretto o caratteri di escape. In ogni modo, preferirei andare con l’opzione 2 che ho citato: la gestione temporanea del tavolo. Ma avete bisogno di un file coerente per quello.

    OriginaleL’autore Erwin Brandstetter

Lascia un commento