2013-10-07 38 views
3

我嘗試從一個表中的一個字段打印所有數據到一個文件中的任何行/字段終止字符。我只想將所有行連接並打印爲輸出行中的一行。我在這裏過得怎麼樣吧:mysql select into outfile沒有任何行終止字符

CREATE TABLE tbl (txt VARCHAR(100)); 
INSERT INTO tbl VALUES ("text1"); 
INSERT INTO tbl VALUES ("text2"); 
INSERT INTO tbl VALUES ("text3"); 

SELECT txt FROM tbl; 

SELECT txt INTO OUTFILE 'test.txt' LINES TERMINATED BY '' FROM tbl; 

Unfortunely輸出我得到的標籤:

text1 text2 text3 

如果我添加

FIELDS TERMINATED BY '' 

那麼所有的100個字符被印製成文件(VARCHAR (100)

text1                        text2                        text3                        

什麼我應該怎麼做一切控制爲:

text1text2text3 

非常感謝提前!

回答

2

假設文本列中沒有空格,請嘗試 SELECT REPLACE(GROUP_CONCAT(txt),',','')AS txt INTO OUTFILE'test.txt'FROM tbl;

如果在數據空間,然後換一個更REPLACE(,」」,‘’)圍繞

如果碰上限制(多少行成爲然後GROUP_CONCATinated這是最好的,如果你是使用以下使用類Unix操作系統

cat 'test.txt' | tr -d '\t' 
+0

嗨Parag,感謝您的幫助!感謝您的建議,我確實能夠解決我的問題。我將在下面發佈我的溶劑。我沒有在文字欄中承擔您對SPACES的評論。如果group_by使用的默認分隔符是COMMA',',那麼爲什麼SPACES很重要,即使它是SPACE,爲什麼還要將它換成一個REPLACE幫助?我需要在數據庫級別上做所有事情,所以使用tr不是一種選擇。無論如何,我在Windows上,所以我甚至不能使用它,如果我想。再次感謝您的幫助! –

1

感謝@Parag我能解決我的問題,通過使用:

SELECT GROUP_CONCAT(txt SEPARATOR '') INTO OUTFILE 'test.txt' LINES TERMINATED BY '' FROM tbl; 

這樣,我沒得換周圍的一切都與更換,並沒有如果文本包含由GROUP_CONCAT使用的默認分隔符,即COMMA',',或者不是,則煩心。

值得記住的一件重要事情是,GROUP_CONCAT()具有最大長度的限制,當你的字段很長時,你會遇到最大長度限制。在我的情況下,TXT領域超過900個字符,所以我只好用:

SET SESSION group_concat_max_len = 1000000 

這並獲得成功,但我不知道是否有任何更好的sollution?

0

使用DUMPFILE:

CREATE TABLE tbl (txt VARCHAR(100)); 
INSERT INTO tbl VALUES ("text1"); 
INSERT INTO tbl VALUES ("text2"); 
INSERT INTO tbl VALUES ("text3"); 

SELECT txt FROM tbl; 

SELECT txt INTO DUMPFILE 'test.txt';