2013-03-04 71 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');