通过验证将csv文件内容加载到mysql表中

时间:2011-02-23 16:29:57

标签: mysql csv phpmyadmin

我想将一个大的csv文件(大约12MO)导入到mysql表中,首先我尝试使用LOAD DATA INFILE它完美地工作,但在我的情况下,我想首先测试csv行以确定我是否要更新数据或插入新记录 因此,解决方案是读取文件并将每行的内容与表中已有的数据进行比较,并采取正确的操作 这种方法也有效但需要大量的时间和资源

现在我的问题是

1:我可以使用PHPMYADMIN的导入功能(开源)     我的项目是商业性的

2:如果是的话我可以,你知道一些关于这个(任何想法)的教程

3:如果我不能,是否有出口/进口的商业框架

谢谢

2 个答案:

答案 0 :(得分:2)

这实际上是非常常见的SQL:你要么插入要么更新,是吗?所以你需要两个语句(一个用于更新,一个用于插入)以及一种判断是否应该插入的方法。你真正需要的是一个永远不会为单个记录(可以是复合键)和两个语句重复的唯一键,如下所示:

UPDATE right SET
   right1 = left1,
   right2 = left2,
   etc
FROM the_import_table right
LEFT JOIN the_existing_data left ON left.key = right.key
WHERE right.key IS NOT NULL --note that I write in TSQL

INSERT INTO right (
   right1,
   right2,
   etc
) SELECT
   left1,
   left2,
   etc
FROM left
LEFT JOIN right on left.key = right.key
WHERE right.key IS NULL

请注意,您可以在WHERE中使用一组ANDed值来使用复合键,并注意您没有更新复合键,但您可能正在插入复合键。这应该是一个很好的开始。在您要求澄清之前,请使用实际代码更新您的问题。

答案 1 :(得分:1)

MySQL具有特定的插入syntax来处理重复的行。