1

大约有 4500 个关于 LOAD DATA INFILE 的问题被问到,但我找不到能解决我的具体问题的问题。

我有用户将 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');

代码工作得很好,我要做的就是清理可能包含垃圾字符的传入字段。我相信我可以通过使用 REPLACE 来简单地在 SET 行中进行清理......这是真的吗?

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','')";

所以我的问题有四个:

  1. 如果找不到任何垃圾字符,它会破坏输入吗?
  2. 如果我也想修剪空间怎么办?
  3. 如果只有'\r',它会被跳过或失败吗?
  4. 有没有更好的方法以某种方式使用正则表达式?

谢谢!!

4

0 回答 0