По поводу LOAD DATA INFILE задано около 4500 вопросов, но ни один, который я не смог найти, касался моей конкретной проблемы.
У меня есть пользователи, загружающие файлы CSV в базу данных MySQL (я использую сценарий LOAD DATA INFILE на бэкэнде), и иногда в полях есть тупые символы, которые необходимо очистить ... в частности, пробелы, CR и LF .
Вот запрос LOAD:
LOAD DATA LOCAL INFILE '".$csvfile."' INTO TABLE table_name FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES
(@dummy,Field2,Field3,Field4)
SET Field1 = (SELECT ID FROM table_a WHERE Username = 'foo');
Код работает просто отлично, все, что я хочу сделать, это очистить входящие поля, которые могут содержать ненужные символы. Я полагаю, что могу просто выполнить очистку в строке SET, используя REPLACE ... Это правда?
SET Field1 = (SELECT ID FROM table_a WHERE Username = 'foo'), REPLACE(Field2,'\r\n','');
Другая идея, с которой я столкнулся, заключалась в том, чтобы справиться с этим в следующем запросе:
$trimQuery = "UPDATE table_name SET Field2 = TRIM(Field2), Field2 = REPLACE(Field2,'\r\n','')";
Итак, мой вопрос в четыре раза:
- Будет ли нарушен ввод, если НЕТ каких-либо ненужных символов для поиска?
- Что если я тоже хочу обрезать пробелы?
- Что, если есть только '\ r', он будет пропущен или потерпит неудачу?
- Есть ли какой-нибудь способ лучше использовать регулярные выражения?
Спасибо !!