2017-02-09 1 views
0

У меня есть файл 13gb .txt, который я импортирую в MySQL, однако я не хочу импортировать все данные. Например, существует много столбцов, которые полностью пусты или содержат нерелевантную информацию - я хочу импортировать только 100/360, которые мне предоставили. Если я создаю только заголовки для столбцов, которые я хочу, могу ли я выбрать конкретные соответствующие данные из файла .txt для загрузки?Могу ли я выборочно импортировать данные из текстового файла в MySQL?

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

+0

показать образец, линии которого ок, а какие нет. то вы можете отфильтровать его с помощью grep, awk или sed и напрямую импортировать эти отфильтрованные данные. –

+1

См. второй ответ [thread] (http://stackoverflow.com/questions/4202564/how-to-insert-selected-columns- из-а-CSV-файла к-а-MySQL-базы данных, используя нагрузки-да) –

ответ

0

Вы можете игнорировать определенные столбцы во входном файле, назначая им определяемую пользователем переменную вместо столбца базы данных.

Например, если у вас есть файл CSV с 4-мя колоннами и просто хотел импортировать столбцы 1 и 4 в таблицу вы могли бы сделать что-то вроде этого:

load data infile '/tmp/so42140337.csv' 
into table so42140337 
fields terminated by ',' 
lines terminated by '\n' 
(c1,@dummy,@dummy,c2); 

Учитывая размер вашего входного файла это может более эффективно импортировать его в куски, а не импортировать весь файл в одну команду. Вы можете использовать инструмент pt-fifo-split для этого, следуя шаблону в этом blog post.

Смежные вопросы