在不同的表上运行相同的SQL脚本
问题描述:
我有一个手动创建的转换脚本,将产品ID更改为另一个脚本。它可以处理上千种产品,我需要在10个不同的表上运行它。我可以在不复制脚本的情况下执行此操作吗?在不同的表上运行相同的SQL脚本
我希望像这样做,但它不支持:
convert_one.sql:
UPDATE @table SET product_id=12345 where product_id=123
... a thousand similar lines
convert_all.sql:
SET @table = 'table1';
SOURCE convert_one.sql;
SET @table = 'table2';
SOURCE convert_one.sql;
答
你有使用prepared statements。否则你的变量就像一个字符串一样对待,你不能选择或更新一个字符串。
试试这样说:
SET @table = 'table1';
PREPARE stmt FROM CONCAT('UPDATE ', @table, ' SET product_id=12345 where product_id=123;');
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
你能从一些'php'脚本文件 –
这是一个Java应用程序,并一次性转换运行'SQL'代码。不幸的是,编码效率不高。 – Arthur