Экспортировать строки базы данных MySQL как текстовые файлы?

Как мне экспортировать каждую строку набора результатов в свой собственный текстовый файл в MySql?

Просто интересно, можно ли экспортировать каждую строку (из определенного столбца) в несколько текстовых файлов, чтобы каждая строка выводилась в отдельный файл.txt?

ура

1 ответ

Да, это возможно. Но вам нужно написать код, чтобы сделать это. Выполните запрос, извлеките каждую строку и для каждой строки откройте файловый дескриптор, запишите все в файловый дескриптор и закройте файловый дескриптор.

Если вы хотите сделать это из MySQL, вы можете использовать расширения MySQL для инструкции SELECT:

SELECT ... INTO OUTFILE

-или же-

SELECT ... INTO DUMPFILE 

Но вам нужно будет выполнить отдельный оператор для каждого "текстового файла", который вы хотите создать, и вы захотите ОГРАНИЧИТЬ запрос на возврат одной строки.

В качестве очень неэффективного примера одного из способов сделать это для количества строк в таблице, выполните цикл:

SELECT * FROM mytable ORDER BY id LIMIT 0,1 INTO OUTFILE 'row_1.txt' ;
SELECT * FROM mytable ORDER BY id LIMIT 1,1 INTO OUTFILE 'row_2.txt' ;
SELECT * FROM mytable ORDER BY id LIMIT 2,1 INTO OUTFILE 'row_3.txt' ;

Это очень неэффективно для больших сетов. И есть возможность для кого-то вставлять или удалять строки во время работы, и у вас есть возможность "пропустить" строку и / или получить "дубликат".

Для больших наборов вы хотите более эффективные запросы. Со списком значений идентификаторов вы можете просмотреть их и сделать что-то вроде:

SELECT * FROM mytable WHERE id = 5 LIMIT 1 INTO OUTFILE 'id_5.txt' ;
SELECT * FROM mytable WHERE id = 7 LIMIT 1 INTO OUTFILE 'id_7.txt' ;
SELECT * FROM mytable WHERE id = 11 LIMIT 1 INTO OUTFILE 'id_11.txt' ;

С отдельной программой вы можете выполнить только один запрос:

SELECT * FROM mytable ORDER BY id;

Затем выполните поиск по строкам и запишите каждую строку в отдельный файл.

Другие вопросы по тегам