Sintassi di input non valida in PostgreSQL


0

Sto cercando di importare un file CSV in PostgreSQL su una tabella. Il tavolo è impostato come qui:

Impostazione tabella:

enter image description here

Il mio file csv è delimitato da virgole e ho inserito del testo che contiene virgole all'interno di segni vocali. Non ha intestazioni. Quando vado a caricare i dati usando i comandi mostrati ottengo l'errore mostrato

Errore:

enter image description here

Penso che questo possa avere qualcosa a che fare con la prima colonna patientId che viene impostata per generare automaticamente un numero sequenziale? Nel mio csv i numeri in questa colonna sono già sequenziali.

Cosa devo fare per farlo caricare con successo per favore.

AGGIORNAMENTO - Ora ho cambiato il mio CSV per avere intestazioni e modificato il codice per chiamare solo in alcune colonne etichettate in modo che salti appId e auto generi il numero come indicato nella tabella:

Appunti di COPIA ("patientId", "appt", "staffId", "lungCapacity", "note") FROM "/home/user/VBoxShare/Appointment.csv" WITH HEADER CSV;

Ora sto ricevendo questo ERRORE: dati aggiuntivi dopo l'ultima colonna prevista CONTESTO: nomine della COPIA, riga 2: "1,4,18 / 04 / 2010,4906475184,5163 ,," Ho controllato il CSV e non ci sono caratteri aggiuntivi dopo i dati. Cosa potrebbe causare questo errore?


Mi chiedo se l'ortografia "europea" sta causando il tuo problema?
DavidPostill

Non stavo correndo quella riga di codice, ma grazie, ho corretto questo
MIS_Gem

Risposte:


0

tipo di dati seriale utilizzato nella colonna appId, serve per generare automaticamente valori univoci. Prova a importare il file .csv senza la colonna appId o modifica la tabella in modo che il valore sia impostato manualmente


Ho provato a caricare dopo aver estratto i primi dati della colonna, ma sta cercando di mettere i valori della seconda colonna nella prima colonna e questo sta causando un errore. Ho bisogno che la colonna generi automaticamente un ID univoco, in quanto il piano sarebbe collegarlo a un sistema di appuntamenti dell'interfaccia grafica in modo che ciascuno abbia bisogno di un ID univoco e non di uno generato manualmente.
MIS_Gem

Ci dovrebbe essere un modo per specificare quale colonna dal csv va dove sul database. Non sono completamente sicuro di quale sia la sintassi di postgresql, ma dovrebbe essere qualcosa del genere. code

code SET DataStyle agli appuntamenti COPIA europea ("patientId", "staffId", "lungCapacity") FROM "/home/user/VBoxShare/Appointment.csv" CON CSV; code

Grazie tapio - Ho provato questo, ma sto ancora vivendo un errore. Anche questo non specifica le colonne per apptare note. Ho aggiunto questi nel codice e sto ancora ricevendo questo errore:
MIS_Gem

RROR: errore di sintassi alla o vicino "COPY" LINEA 2: appuntamenti COPY ("patientId", "staffId", "lungCapacity") ^ ********** Errore ********** ERRORE: errore di sintassi allo stato SQL "COPIA" o vicino a: 42601 Carattere: 28
MIS_Gem

0

Alla fine ho ottenuto una soluzione aggiungendo un'intestazione al mio CSV e importando tutte le colonne come di seguito:

Appunti di COPIA ("appId", "patientId", "appt", "staffId", "lungCapacity", "note") Da '/home/user/VBoxShare/Appointment.csv' WITH HEADER CSV;

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.