通过验证将csv文件内容加载到mysql表中
我想将一个大的csv文件(大约12MO)导入mysql表,首先我尝试了加载数据填充,它工作得很好,但在我的例子中,我想首先测试csv行,以确定是否要更新数据或插入新记录 因此,解决方案是读取文件并将每一行的内容与表中已有的数据进行比较,然后做出正确的操作 这种方法也有效,但需要大量的时间和资源 现在我的问题是 1:我可以使用PHPMYADMIN(开源)的导入功能吗 我的项目是商业性的 2:如果可以的话,你知道这方面的一些教程吗(有什么想法) 3:如果没有,我不能,是否有这样的商业框架用于导出/导入通过验证将csv文件内容加载到mysql表中,mysql,csv,phpmyadmin,Mysql,Csv,Phpmyadmin,我想将一个大的csv文件(大约12MO)导入mysql表,首先我尝试了加载数据填充,它工作得很好,但在我的例子中,我想首先测试csv行,以确定是否要更新数据或插入新记录 因此,解决方案是读取文件并将每一行的内容与表中已有的数据进行比较,然后做出正确的操作 这种方法也有效,但需要大量的时间和资源 现在我的问题是 1:我可以使用PHPMYADMIN(开源)的导入功能吗 我的项目是商业性的 2:如果可以的话,你知道这方面的一些教程吗(有什么想法) 3:如果没有,我不能,是否有这样的商业框架用于导出/导
谢谢这实际上是非常常见的SQL:您想要插入或更新,是吗?所以您需要两条语句(一条用于update,一条用于insert)和一种判断是否应该插入的方法。您真正需要的是一个不会为单个记录复制的唯一键(可以是复合键)和两条语句,如下所示:
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中的一组and值来使用组合键,并且请注意,您没有更新组合键,但可能正在插入组合键。这会让你有个好的开始。在您要求澄清之前,请使用实际代码更新您的问题。这实际上是非常常见的SQL:您想要插入或更新,是吗?所以您需要两条语句(一条用于update,一条用于insert)和一种判断是否应该插入的方法。您真正需要的是一个不会为单个记录复制的唯一键(可以是复合键)和两条语句,如下所示:
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中的一组and值来使用组合键,并且请注意,您没有更新组合键,但可能正在插入组合键。这会让你有个好的开始。在您要求澄清之前,请使用实际代码更新您的问题。MySQL有特定的insert来处理重复的行。MySQL有特定的insert来处理重复的行。我不明白12Mb怎么会被视为“大文件”。加载数据填充有“替换|忽略”关键字。我看不出12Mb怎么会被认为是一个“大文件”。加载数据填充有“替换|忽略”关键字。