2013-03-04 72 views
1

我有一个问题,我有一个“文本”字段与一堆“故事”粘贴从单词等这样的事情,包括像换行符和制表符。我想导出为CSV,保持这些或能够让他们回来。MySQL的换行符会导出为CSV格式吗?

但我不知道如何逃脱它们,所以它的作品?当我导出CSV时,我会在多行/列上得到一串单个句子的CSV。

我试图用其他东西取代新闻线,但我一直搞乱了。有没有简单的方法来做到这一点,而不会破坏数据?

+0

是的,这就是CSV的工作原理。你可以很容易地将换行符转义为'
'元素。 – ppeterka 2013-03-04 16:24:56

+0

是否使用PHP的fgetcsv()函数?你在使用MySQL的LOAD DATA命令吗? – 2013-03-04 16:25:02

+0

我正在使用MYSQL导出CSV功能。 PHP FGETCSV会工作吗? – Steven 2013-03-04 16:26:06

回答

2

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

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

引发'字段分隔符参数不是预期的错误。必须是 'ESCAPED BY'“'' – Blaubaer 2016-07-26 10:07:13

0

尝试这样:

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

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

和你到底必须首先显示$line包括标题。

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

0

您可以尝试使用SELECT进行搜索并替换某种东西,在其中搜索\ n的换行符并将其替换为“'”。除非你做了更新,否则SELECT实际上不会替换表中的任何东西。见下面的查询示例。

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