Mysql: Wie kann ich mithilfe der RTRIM in mein LOAD DATA INFILE query?
In meinem code habe ich eine Abfrage, die wie folgt aussieht:
$load_query = "LOAD DATA LOCAL INFILE '{$file}' INTO TABLE `{$table}`
FIELDS TERMINATED BY ',' ENCLOSED BY '\"';";
Ist hier eine Beispiel-Zeile in der Datei enthalten, die ich versuche zu laden:
"MC318199","06160","1","P","00750","00000","TN598792","04/16/2009","91X"
Werden Sie feststellen, dass am Ende des Beispiel, die Reihe gibt es schon ein paar Räume. Diese Räume, die alle auftreten, bevor das neue-Zeile-Zeichen "\n" beendet die Linie. Das problem ist, dass diese Räume in die Datenbank eingegeben.
Wie kann ich entfernen Sie die zusätzlichen Leerzeichen bei der Ausführung der LOAD DATA INFILE
Befehl? Gibt es eine Möglichkeit zu nutzen RTRIM
?
Bearbeiten
Als ajreal schlug ich musste re-die Datei vorbereiten. Nachdem die Datei vorbereitet wurde, war es in die Datenbank eingefügt, richtig. Ich veränderte die bash-script, zu finden unter: http://gabeanderson.com/2008/02/01/unixlinux-find-replace-in-multiple-files/ um dies zu erreichen. Der code ist unten dargestellt:
#!/bin/bash
for fl in *.txt; do
mv $fl $fl.old
sed 's/[ \t]*$//' $fl.old > $fl
rm -f $fl.old
done
- Ich musste re-bereiten Sie die Datei vor dem eintragen in die Datenbank. Ich habe folgende bash-Skript zum entfernen der Leerzeichen aus der Datei. Ich stellte den code in meiner Frage um richtig formatiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
dun denken zu erschweren, rechts, nach u laden der Daten
update $table set $last_column=rtrim($last_column);
oder manuell entfernen Sie die Leerzeichen in der $ - Datei mit
vi
(oder einem beliebigen editor)oder re-preapare die $Datei
So dass Sie nicht brauchen, um pre-Prozess die Datei noch erstellen, andere updates auf dem Tisch.
Wie wärs einfach trimmen der importierten Daten in einem zweiten Schritt?
verwenden
LINES TERMINATED BY '\n'
"\n"
" 😉