Ungültige Eingabesyntax in PostgreSQL

869
Gemma Davies

Ich versuche, eine csv-Datei in PostgreSQL in eine Tabelle zu importieren. Die Tabelle ist wie folgt aufgebaut:

Tabelleneinrichtung:

Ungültige Eingabesyntax in PostgreSQL

Meine CSV-Datei wird durch Kommas getrennt und ich habe Text eingeschlossen, der innerhalb von Sprachmarken Kommas enthält. Es hat keine Header. Wenn ich die Daten mit den angezeigten Befehlen hochlade, erhalte ich die Fehlermeldung

Error:

Ungültige Eingabesyntax in PostgreSQL

Ich denke, das hat etwas damit zu tun, dass die erste Spalte patientId so eingerichtet ist, dass automatisch eine fortlaufende Nummer generiert wird. In meiner csv sind die Zahlen in dieser Spalte bereits fortlaufend.

Was muss ich tun, um dies zu erhalten, um erfolgreich hochgeladen zu werden, bitte.

UPDATE - Ich habe jetzt meine CSV-Datei so geändert, dass sie Header enthält, und der Code wurde so geändert, dass er nur in bestimmten beschrifteten Spalten aufgerufen wird, sodass appId übersprungen wird und die in der Tabelle angegebene Anzahl automatisch generiert wird:

COPY-Termine ("patientId", "appt", "staffId", "lungCapacity", "note") FROM '/home/user/VBoxShare/Appointment.csv' WITH HEADER CSV;

Ich erhalte jetzt diesen FEHLER: zusätzliche Daten nach der letzten erwarteten Spalte CONTEXT: COPY-Termine, Zeile 2: "1,4,18 / 04 / 2010,4906475184,5163" Ich habe die CSV geprüft und es sind keine weiteren Zeichen nach vorhanden die Daten. Was könnte diesen Fehler verursachen?

0
Ich frage mich, ob das Rechtschreibfehler "Europäer" Ihr Problem verursacht? DavidPostill vor 8 Jahren 0
Ich habe diese Codezeile nicht ausgeführt, aber danke, ich habe das korrigiert Gemma Davies vor 8 Jahren 0

2 Antworten auf die Frage

0

Der in Spalte appId verwendete Datentyp serial dient zum automatischen Generieren eindeutiger Werte. Versuchen Sie, die CSV-Datei ohne die Spalte appId zu importieren, oder ändern Sie die Tabelle so, dass der Wert manuell festgelegt wird

Ich habe das Hochladen nach dem Herausnehmen der ersten Spaltendaten versucht, aber es versucht dann, die zweiten Spaltenwerte in der ersten Spalte zu platzieren, und dies verursacht einen Fehler. Ich brauche die Spalte, um automatisch eine eindeutige ID zu generieren, da der Plan darin besteht, sie mit einem GUI-Terminsystem zu verknüpfen, sodass jedes eine eindeutige Term-ID benötigt und keine manuell generierte. Gemma Davies vor 8 Jahren 0
Es sollte eine Möglichkeit geben, anzugeben, welche Spalte aus dem CSV in die Datenbank geht. Ich bin nicht ganz sicher, was die Syntax in postgresql ist, aber es sollte so etwas sein. "Code" vor 8 Jahren 0
`code`SET DataStyle ZU europäischen COPY-Terminen (" patientId "," staffId "," lungCapacity ") FROM '/home/user/VBoxShare/Appointment.csv' WITH CSV;` code ' vor 8 Jahren 0
Vielen Dank, tapio - ich habe es versucht, aber es tritt immer noch ein Fehler auf. Dies legt auch nicht die Spalten für die Notizen fest. Ich habe diese in den Code eingefügt und erhalte immer noch diese Fehlermeldung: Gemma Davies vor 8 Jahren 0
RROR: Syntaxfehler bei oder in der Nähe von "COPY" LINE 2: COPY-Termine ("patientId", "staffId", "lungCapacity") ^ ********** Fehler ********** FEHLER: Syntaxfehler bei oder in der Nähe des Status "COPY": 42601 Zeichen: 28 Gemma Davies vor 8 Jahren 0
0
Gemma Davies

Ich erhielt schließlich eine Lösung dafür, indem ich meiner CSV einen Header hinzufügte und alle Spalten wie folgt importierte:

COPY-Termine ("appId", "patientId", "appt", "staffId", "lungCapacity", "note") FROM '/home/user/VBoxShare/Appointment.csv' WITH HEADER CSV;