Как загрузить данные в таблицу MySQL без пробелов? - PullRequest
2 голосов
/ 27 декабря 2010

У меня есть текстовый файл для импорта в таблицу MySQL. Столбцы файлов разделяются запятыми. Я создал соответствующую таблицу и использовал команду:

load data LOCAL INFILE 'myfile.txt' into table mytable FIELDS TERMINATED BY ‘,’;

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

Ответы [ 2 ]

2 голосов
/ 18 сентября 2012

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

Кажется, лучший способ справиться с этим - использовать предложение SET с TRIM функция

("SET column2 = TRIM(column2)")

или запустите обновление строковых столбцов после загрузки, используя функцию TRIM().

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

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

0 голосов
/ 27 декабря 2010

Если вы можете использовать .NET, CSVReader - отличный вариант (http://www.codeproject.com/KB/database/CsvReader.aspx).. Вы можете читать данные из CSV и указывать разделитель, параметры обрезки и т. Д. В вашем случае вы можете обрезать левый и правый пробелы из каждогозначение. Затем можно либо сохранить результат в новый текстовый файл и импортировать его в базу данных, либо выполнить цикл по объекту CsvReader и напрямую вставить каждую строку в базу данных. Производительность CsvReader впечатляет. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...