我将使用PHP
从excel插入数据到MySQL
,但我需要在将数据推送到真实表之前进行一些验证。我尝试了两个选项,两个选项都适合我。
选项1
读取数组中的excel数据。循环数组,获取每个值并对数据进行验证。然后插入到实表中。或
选项2
将数据批量加载到db中的临时表中。调用一个过程并进行适当的验证。验证完成后,将数据从临时表移动到实际表。
我知道两种选择都是可以实现的,但我更关心的是性能。有人知道哪一个性能更好吗?换句话说,可以执行得更快。任何建议或参考链接都是非常感谢的。
我不知道是否验证你的Excel数据逐行会更快,但它会节省你的数组存储在内存中。
get Excel row -> validate row -> insert into db
如果你想要速度,不要一次处理一行。相反,使用SQL擅长的东西——对值的数组(表)应用相同的东西。
假设您想将列foo
的空字符串转换为null。这将对整个表执行此操作:
UPDATE tbl SET foo = NULL WHERE foo = '';
简单。快。很能干的人。
删除数字中的美元符号和逗号。例如,$1,234.56
—> 1234.56
.
- 读入
VARCHAR
,而不是数字字段。 - 拥有(或添加)一个带有数字字段的列,例如
DECIMAL(11,2)
。
,
UPDATE tbl SET amt = REPLACE(REPLACE(amt_str, ',', ''), '$', '');
如果您正在使用LOAD DATA
,您可以在语句中执行这两个示例。(避免多出一列)