2016-06-01 5 views
1

Ich versuche, eine SQL-Datei mit MySQL zu exportieren. Ich benutze diese Methode, weil ich Dateien mit der LOAD DATA Funktion importieren möchte. Und der Dateiname muss dynamisch generiert werden. Ich werde die Datei ausführen, die über die Befehlszeile generiert wird.So exportieren Sie die Bruchlinie ' n' in einer Datei mit MySQL INTO OUTFILE

Dies ist das Skript:

SET @filename = 'C:/icl/myfile.CSV'; 

SET @str = CONCAT('LOAD DATA INFILE ',@filename); 
SET @str = CONCAT(@str,' INTO TABLE icl_process_data.filecontent LINES TERMINATED BY ''\n'''); 

SELECT @str INTO OUTFILE 'C:/icl/tmp_script.sql'; 

Dies ist das Ergebnis:

LOAD DATA INFILE C:/icl/myfile.CSV INTO TABLE icl_process_data.filecontent LINES TERMINATED BY '\' 

Ich weiß nicht, warum das Ergebnis der Bruchlinie '\ n' '\' ist. Wie kann ich dieses Problem lösen?

+0

nicht upvote Vergessen, downvote Akzeptieren Sie alle Antworten mit dem grünen Häkchen, wenn es sich als angebracht erweist. Das ist unser Feedback für unsere Bemühungen. – Drew

Antwort

0

Es ist eine Frage von Escape-Sequenzen und es gibt mehrere Möglichkeiten, es zu tun. Ich entschied mich dafür, einfach das anfängliche einzelne Zitat in die äußeren doppelten Anführungszeichen am Ende des ersten Weges einzufügen (mit 3 Chunks in concat).

Und einfache Anführungszeichen als zweiter Weg (mit 2 Stücken in concat):

SET @filename = 'C:/icl/myfile.CSV'; 
-- C:/icl/myfile.CSV 

SET @str = CONCAT('LOAD DATA INFILE ',@filename); 
-- LOAD DATA INFILE C:/icl/myfile.CSV 

-- First way is below (with the result being the line after it if you ignore the `-- ` at the beginning): 
SET @str = CONCAT(@str," INTO TABLE icl_process_data.filecontent LINES TERMINATED BY '","\\n'"); 
-- LOAD DATA INFILE C:/icl/myfile.CSV INTO TABLE icl_process_data.filecontent LINES TERMINATED BY '\n' 

-- Second way is below (with the result being the line after it if you ignore the `-- ` at the beginning): 
SET @str = CONCAT('LOAD DATA INFILE ',@filename); 
SET @str = CONCAT(@str,' INTO TABLE icl_process_data.filecontent LINES TERMINATED BY \'\\n\''); 
-- LOAD DATA INFILE C:/icl/myfile.CSV INTO TABLE icl_process_data.filecontent LINES TERMINATED BY '\n' 

aus der MySQL-Handbuch Seite auf String Literals:

enter image description here

Verwandte Themen