Dan*_*iel 8 mysql carriage-return
我有一个查询,将每行两列的数据导出到一个文件中.在每个列的文件数据应该由回车分隔,如下所示:
row1column1
row1column2
row2column1
row2column2
row3column1
row3column2
我尝试使用char(13):
SELECT CONCAT(column1, char(13), column2) FROM my_table INTO outfile 'my_file'
Run Code Online (Sandbox Code Playgroud)
并且输出文件看起来非常好(每个列数据在另一行中),但是当我将它用作应该接受所描述格式的程序的输入时,它无法识别它.但是,当我手动擦除文件中的所有回车并通过按"回车"键再次添加它们时,我的程序识别该文件没有问题.当我尝试使用char(13),char(10)时,我的输出文件如下所示:
row1column1
\
row1column2
row2column1
\
row2column1
我确定我错过了明显的东西:)
我在mysql网站上看到它,希望对你有所帮助.
您应该使用以下语法以Microsoft Excel预期的格式创建CSV文件:
...... INTO OUTFILE'/ temp.csv'FIELDS ESCAPED''''终止','''''''''''''''''''''''''
但是回车的字段可能会破坏CSV,因为当找到\ r \n换行符时,MySQL会自动关闭一个字段.要解决此问题,请用\n替换所有\ r \n符号.该字段在\n中断时不会关闭,它将被读入Excel中的单个单元格.您可以在同一SQL语句中执行此操作,例如:
SELECT REPLACE(field_with_line_breaks, '\ r \n', '\n')FROM表INTO OUTFILE '/temp.csv' ESCAPED BY字段 ' ""' TERMINATED BY '' ENCLOSED BY '"' 结尾由线'\ r \n';
我还发现空值可能会破坏CSV.这些可以用类似的方式处理:
SELECT IFNULL(possible_null_field, "")FROM表INTO OUTFILE '/temp.csv' 字段ESCAPED BY ' ""' TERMINATED BY '' ENCLOSED BY '"' TERMINATED BY '\ r\N' 线;
注意:这将使用空字符串替换NULL值,这在技术上并不相同,但它会在Excel中为您提供一个空单元格,而不是破坏CSV结构并将以下单元格移到左侧.
小智 5
Haim Evgi的答案有效,但是:
SELECT REPLACE(field_with_line_breaks, '\r\n', '\n') FROM table INTO OUTFILE '/temp.csv' FIELDS ESCAPED BY '""' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
Run Code Online (Sandbox Code Playgroud)
我不得不改为:
SELECT REPLACE(field_with_line_breaks, '\r\n', '\n') FROM table INTO OUTFILE '/temp.csv' FIELDS ESCAPED BY '"' TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
Run Code Online (Sandbox Code Playgroud)
有没有在田的逃了出来,这在mysql中了此错误双引号:"错误1083:字段分隔符的说法是不是预期;检查手册".
将其更改为单引号会停止错误并导出文件.然后我能够成功地将其导入到Excel中,并正确格式化换行符.
| 归档时间: |
|
| 查看次数: |
44413 次 |
| 最近记录: |