mysql选择到输出文件,不带任何行终止字符
我尝试将表中一个字段中的所有数据打印到一个文件中,不带任何行/字段终止字符。我只想将所有行连接起来,并在输出行中打印为一行。以下是我的做法:mysql选择到输出文件,不带任何行终止字符,mysql,select,formatting,into-outfile,select-into-outfile,Mysql,Select,Formatting,Into Outfile,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 O
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;
不幸的是,在输出中我得到了标签:
text1 text2 text3
如果我加上
FIELDS TERMINATED BY ''
然后将所有100个字符打印到文件(VARCHAR(100)
我应该怎么做才能把所有事情都理解为:
text1text2text3
非常感谢!假设文本列本身没有空格,请尝试 从tbl中选择替换(GROUP_CONCAT(txt),',','')作为txt到输出文件“test.txt” 如果数据中有空格,则再环绕一个替换(,'','','') 如果您遇到限制(组包含多少行),那么如果您使用的是类Unix操作系统,最好使用以下命令
cat 'test.txt' | tr -d '\t'
多亏了@Parag,我能够通过以下方式解决我的问题:
SELECT GROUP_CONCAT(txt SEPARATOR '') INTO OUTFILE 'test.txt' LINES TERMINATED BY '' FROM tbl;
这样,我就不必用REPLACE来包装所有内容,也不必担心文本是否包含GROUP_CONCAT使用的默认分隔符,即逗号“,”或不是
值得记住的一件重要事情是,GROUP_CONCAT()有一个最大长度的限制,当您的字段很长时,您可能会遇到这个限制。在我的例子中,txt字段超过900个字符,因此我必须使用:
SET SESSION group_concat_max_len = 1000000
这确实奏效了,但我想知道是否有更好的解决方案?使用转储文件:
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';
你好,帕拉格,谢谢你的帮助!多亏了你的建议,我实际上已经解决了我的问题。我马上就要在下面发布我的解决方案。我不理解你在文本栏中对空格的评论。如果group_by使用的默认分隔符是逗号“”,为什么空格很重要?即使它是空格,我为什么要这样做我需要在数据库级别执行所有操作,因此使用tr不是一个选项。无论如何,我在Windows上,所以如果我想使用它,我甚至无法使用它。再次感谢您的帮助!
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';