2009-12-15 31 views
0

我使用Java連接到MySQL數據庫。我執行此查詢:爲什麼執行INTO OUTFILE查詢時會得到 N?

String query = 
     "SELECT * FROM TT2 " + 
     "INNER JOIN " + 
     "`Language Pref` " + 
     "ON tt2.msisdn = `language pref`.MDN " + 
      "INTO OUTFILE 'c:/test12226.csv' " + 
      "FIELDS TERMINATED BY ',' " + 
      "ENCLOSED BY '\"' " + 
      "LINES TERMINATED BY '\n'"; 

我正在執行此查詢使用executeQuery(查詢)。

生成的CSV文件除了最後一列以外是完美的。在名爲Language Pref的原始表中,最後一列有一些空或空單元。在CSV文件中,無論原始表語言pref中存在這些空單元格的哪個位置,我都應該會得到「\ N」而不是空單元格。

我該如何解決這個問題?

回答

0

嗯,,\n在行的末尾表示最後一列中的空值。所以一切都很好。

1

如果你想要一個字符串中的'\'字符,你需要輸入'\\'。

實施例:

System.out.print("The newline char \\n makes a new line: \n"); 

所以在你的例子你的最後行應爲:

"LINES TERMINATED BY '\\n'"; 
1

字符串\ N被用來表示一個空值。所以這是正確的答案。

\ n是完全不同的,這是一個換行符。

0

您可以使用MySQL IFNULL函數: ifnull(fieldname, '')來避免這種情況。

這將把''而不是NULL,因此你會得到你的輸出文件中的空字符串。唯一的問題是你必須爲每一列單獨指定它。

注意:'\ N'似乎只在使用Excel打開時出現。

相關問題