【问题标题】:How to export break line '\n' in a file using MySQL INTO OUTFILE如何使用 MySQL INTO OUTFILE 在文件中导出换行符'\n'
【发布时间】:2023-04-08 07:03:01
【问题描述】:

我正在尝试使用 MySQL 导出一个 sql 文件。我使用这种方法是因为我想用LOAD DATA 函数导入文件。并且文件名必须动态生成。我将执行通过命令行生成的文件。

这是脚本:

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';

这是结果:

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

不知道为什么断行'\n'的结果是'\'。我该如何解决这个问题?

【问题讨论】:

  • 不要忘记支持、反对、接受任何带有绿色复选标记的答案,如果合适的话。这是我们对我们努力的反馈。

标签: mysql


【解决方案1】:

这是一个转义序列的问题,有几种方法可以做到。我选择将起始单引号放在靠近第一种方式末尾的外部双引号内(concat 中有 3 个块)。

单引号作为第二种方式(concat 中有 2 个块):

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'

来自String Literals上的mysql手册页:

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 2012-04-01
    • 1970-01-01
    • 2010-10-31
    • 2011-08-10
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多