SQLite - einfügen eines Strings mit Zeilenumbruch in Datenbank aus csv-Datei
Alle,
Ich versuche zu injizieren einer langen text-Eintrag in eine SQLite-Datenbank in einem TEXT-Feld. Dieser text hat neue Zeilen in (D. H. es erstreckt sich über mehrere Absätze).
Bekomme ich die neuen Zeilen zu zeigen, wenn ich die manuell eingeben:
INSERT INTO "LOGENTRY" VALUES(5,40,'PLACE','line1
line2
line4
',1283990533315,'4A','TEXT','',NULL);
aber wenn ich den entsprechenden text in einer CSV-Datei und versuchen Sie .importieren Sie Sie in die Tabelle ein, erhalte ich eine Fehlermeldung, dass es erwartet, mehr Spalten, als vorhanden ist (sobald die neue Zeile gefunden wird, übernimmt das Programm das Ende der Eingabe, und so ist es fehlende Spalten).
Ist das möglich? Oder ist der einzige Weg, um manuell jedes EINFÜGEN?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist das csv-format: sqlite unterstützt keine Werte enthält Zeilenumbrüche.
In der sqlite-Dialekt:
Kommas getrennte Felder
Doppelte Anführungszeichen können verwendet werden, um ein Feld zu gruppieren, die Kommas enthält.
Neue Linien abgrenzen
Müssen Sie entweder zu entkommen,/entfernen Sie Ihre neuen Linien, oder, verwenden einige andere mehr geeignet-Datei-format.
Folgende (sed), regular expresion wird "löschen" unerwünschte Zeilenumbrüche
text/csv
definition (RFC 4180) erlaubt Zeilenumbrüche innerhalb von Feldern. Leider nicht jede Umsetzung unterstützt. Und die CSV hat mehrere andere Gründe für ungeeignet für SQL-Tabellen, eine große eine, die das fehlen einer Art und Weise zu unterscheiden zwischen''
undNULL
.Einfach googeln gab mir das Ergebnis
http://www.mail-archive.com/[email protected]/msg43557.html
Ja, Sie können:
Hoffe, es hilft!
Wenn es innerhalb der Anwendung würde ich die Verwendung einer parametrisierten /prepared statement, zumindest für diejenigen Werte, die nicht konstant sind:
Versuchen Sie "echo -n", oder so etwas wie echo "Datei" | tr '\n' ' '
Betrifft.