MySQL выбрать в выходной файл без символа окончания строки

Я пытаюсь распечатать все данные из одного поля из таблицы в файл без любого символа завершения строки / поля. Я просто хотел бы, чтобы все строки были объединены и напечатаны как одна строка в строке вывода. Вот как я это делаю:

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)

text1                                                                                               text2                                                                                               text3                                                                                               

Что я должен сделать, чтобы связать все как:

text1text2text3

Спасибо заранее!

3 ответа

Предполагая, что в самом текстовом столбце нет пробелов, попробуйте SELECT REPLACE(GROUP_CONCAT(txt),',','') AS txt INTO OUTFILE 'test.txt' FROM tbl;

Если в данных есть пробелы, оберните еще один REPLACE(,' ','')

если вы столкнетесь с лимитом (сколько строк должно быть GROUP_CONCATinated, то лучше использовать следующее, если вы используете Unix как OS

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

Благодаря @Parag я смог решить свою проблему, используя:

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

Таким образом, мне не нужно было оборачивать все вокруг с помощью REPLACE и не беспокоиться о том, содержит ли текст разделитель по умолчанию, используемый GROUP_CONCAT, то есть COMMA ',' или нет.

Следует помнить одну важную вещь: GROUP_CONCAT() имеет ограничение максимальной длины, с которым вы, вероятно, сталкиваетесь, когда ваши поля длинные. В моем случае поля txt содержат более 900 символов, поэтому мне пришлось использовать:

SET SESSION group_concat_max_len = 1000000

Это сработало, но мне интересно, есть ли лучшее решение?

Используйте 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';
Другие вопросы по тегам