Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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
Mysql SQL脚本-基于excel数据更新表_Mysql_Sql - Fatal编程技术网

Mysql SQL脚本-基于excel数据更新表

Mysql SQL脚本-基于excel数据更新表,mysql,sql,Mysql,Sql,我有以下三个表格: 产品:IDProduct,产品零件号 手册:IDManual 产品手册:IDProduct,IDManual 我必须根据包含以下两列的数据列表(2-3000个条目)更新产品和手册之间的链接:ProductPartNumber、NewProductPartNumber 我想完成的是浏览ProductManual表,如果IDProduct对应于数据列表中的ProductPartNumber,则将其替换为对应于NewProductPartNumber的IDProduct 我该怎么做

我有以下三个表格:

产品:IDProduct,产品零件号

手册:IDManual

产品手册:IDProduct,IDManual

我必须根据包含以下两列的数据列表(2-3000个条目)更新产品和手册之间的链接:ProductPartNumber、NewProductPartNumber

我想完成的是浏览ProductManual表,如果IDProduct对应于数据列表中的ProductPartNumber,则将其替换为对应于NewProductPartNumber的IDProduct


我该怎么做?我想我应该在一个事务中这样做,以防发生意外情况,因为此脚本将改变生产数据库。

方式1:使用sql批处理,您可以为数据列表创建临时表,并运行以下sql:

开始训练

创建表#TempProductPartNumber(ProductPartNumber INT,NewProductPartNumber INT) --将数据列表插入此临时表

更新产品 设置Product.ProductPartNumber=#TempProductPartNumber.NewProductPartNumber 从产品 Product.IDProduct=ProductManual.IDProduct上的内部连接ProductManual 内部联接#TempProductPartNumber ON#TempProductPartNumber.ProductPartNumber=Product.ProductPartNumber

提交传输


方法2:获取产品和产品手册的所有数据,以相同的方式使用linq更新数据,并将数据更新回DB

您还可以使用excel中的公式为每行创建更新脚本:

="UPDATE Product p SET p.ProductPartNumber = " & A2 & " WHERE p.ProductPartNumber = " & A1
然后

="UPDATE ProductManual m SET m.IDProduct= " & A2 & " WHERE m.IDProduct= " & A1

然后运行所有行

I thing,我可以帮助你们,但这个问题对我来说根本无法理解),若你们提供更多信息,那个就更好了