Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过验证将csv文件内容加载到mysql表中_Mysql_Csv_Phpmyadmin - Fatal编程技术网

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

通过验证将csv文件内容加载到mysql表中,mysql,csv,phpmyadmin,Mysql,Csv,Phpmyadmin,我想将一个大的csv文件(大约12MO)导入mysql表,首先我尝试了加载数据填充,它工作得很好,但在我的例子中,我想首先测试csv行,以确定是否要更新数据或插入新记录 因此,解决方案是读取文件并将每一行的内容与表中已有的数据进行比较,然后做出正确的操作 这种方法也有效,但需要大量的时间和资源 现在我的问题是 1:我可以使用PHPMYADMIN(开源)的导入功能吗 我的项目是商业性的 2:如果可以的话,你知道这方面的一些教程吗(有什么想法) 3:如果没有,我不能,是否有这样的商业框架用于导出/导

我想将一个大的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怎么会被认为是一个“大文件”。加载数据填充有“替换|忽略”关键字。