为什么在执行INTO OUTFILE查询时会得到\ N?

时间:2009-12-15 08:54:48

标签: java mysql

我使用Java连接到MySQL数据库。我正在执行此查询:

    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(query)执行此查询。

除最后一列外,生成的CSV文件是完美的。在名为Language Pref的原始表中,最后一列包含一些空单元格或空单元格。在CSV文件中,只要原始表语言pref中存在这些空单元格,我就会得到“\ N”而不是空单元格。

我该如何纠正?

4 个答案:

答案 0 :(得分:1)

如果你想在字符串中使用'\'字符,则需要输入'\\'。

示例:

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

因此,在您的示例中,您的最后一行应为:

"LINES TERMINATED BY '\\n'";

答案 1 :(得分:1)

字符串\ N用于表示空值。所以这是正确的答案。

\ n完全不同,这是换行符。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以使用MySQL IFNULL功能: ifnull(fieldname, '')要避免这种情况。

这将使''而不是NULL,因此您将在输出文件中获得空字符串。唯一的问题是您必须为每个列单独指定它。

注意:' \ N'似乎只有在用Excel打开时才会出现。