【发布时间】:2016-01-27 11:43:47
【问题描述】:
我正在导出带有 shell 文件的数据库报告。如果我在 PHPMyAdmin 中运行查询,则文件输出正常,仅在数据库中每行末尾的新行。
但是,当我使用 outfile 在 shell 脚本中运行查询以生成文件时,我在某些列内容中得到 /n、/r 和 /r/n。我不知道是什么原因造成的,也不知道如何避免。
问题似乎只在示例导出中的第三个颜色列中引起。
查询:
mysql $MYSQLOPTS << EOFMYSQL
SELECT Product_Name, Item_Size, Item_Colour, Item_Price, Current_Stock, Item_Price * Current_Stock AS Stock_Value
FROM Items
ORDER BY Product_Name
INTO OUTFILE '$FILE'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
EOFMYSQL
示例结果:
"Scarf_in_Peach","ONE SIZE","12/04-B2B2 ",10.00,3,30.00
"Scarf_in_Pink","ONE SIZE ","11/06-odds-C1C12100",10.00,0,0.00
"Scarf_in_Red","ONE SIZE ","11/06-B7B2-C1C12100",10.00,0,0.00
"Scarf_in_Sand_","ONE SIZE","11/06-B1I3-C1C12100
",10.00,0,0.00
"Scarf_in_Sand_/_Blue_Flowers","ONE SIZE","12/04-B2E2-C1C12100 ",10.00,4,40.00
"Scarf_in_Teal","ONE SIZE","11/06-B5G1-C1C12100
",10.00,0,0.00
"Scarf_in_Teal_/_Red_Flowers","ONE SIZE","12/04 - B2B2 ",10.00,1,10.00
"Sunrise_Skinnies","16","ODD-R1S009-1-BLUE",20.00,0,0.00
"Sunrise_Skinnies","8","ODD-R1S009-1
BLUE",20.00,0,0.00
【问题讨论】:
-
您是否测试过您的数据以查看您的字段中是否确实有空格(即 \n)?我问是因为最后我看到了一些记录的空格,也许你也有
\n -
在数据库中,其中一些确实有换行符,但是当我从 PHPmyAdmin 导出到 CSV 时,我没有。即使我没有选择“删除列中的回车/换行符”,它们也很好。
-
在您的查询中,您可以用空字符串替换回车符和换行符。
-
你能看看this question
-
@Shadow 如果我将选择中的颜色列更改为
REPLACE(REPLACE(Item_Colour, CHAR(13), ' '), CHAR(10), ' '),这似乎确实有效。虽然在没有长字符串的情况下转义所有列的方法是理想的,但对于这个脚本来说已经足够了。谢谢。
标签: mysql shell carriage-return