MySQL转义符中断导出为CSV?

时间:2013-03-04 16:23:19

标签: php mysql csv

我遇到了一个问题我有一个“文本”字段,其中包含一些“故事”,这些故事是通过单词等粘贴的,因此包括换行符和制表符等内容。我想导出到CSV维护这些或能够让他们回来。

但我无法弄清楚如何逃避它们以便它起作用?当我导出CSV时,我会在多行/列上获得一堆包含单句的CSV。

我尝试用其他东西替换新闻专线,但我一直搞砸了。有没有一种简单的方法可以在不破坏数据的情况下做到这一点?

3 个答案:

答案 0 :(得分:2)

CSV不是任意文字的良好格式,但您可以尝试

SELECT ... INTO OUTFILE '/tmp/text.csv'
   FIELDS ESCAPED BY '""' TERMINATED BY ','  OPTIONALLY ENCLOSED BY '"'
   LINES TERMINATED BY '\n' 
FROM yourtable

答案 1 :(得分:0)

尝试这样的事情:

$line.=preg_replace("/\n\t/", ";", preg_replace("/,/", ";", $f['field5'])).',';

$line.=preg_replace("/\n/", ";", preg_replace("/,/", ";", $f['field5'])).',';

最后,您必须首先显示包含标题的$line

$f['field5'] - 数据来自db。

答案 2 :(得分:0)

您可以尝试SELECT进行搜索并替换某种内容,搜索'\n'的换行符并将其替换为''。除非您执行SELECT,否则UPDATE实际上不会替换表格中的任何内容。请参阅下面的查询示例。

(SELECT 'columnA', 'columnB', 'columnC')
UNION
(SELECT `columnA`, REPLACE(`columnB`, '\n', ''), `columnC`
FROM `yourtable`
INTO OUTFILE '/tmp/text.csv'
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' ESCAPED BY '"'
LINES TERMINATED BY '\n');