我有一个很长的脚本,需要在几个不同的数据库上运行(所有数据库都具有相同的表和字段名称)。
我想做的是这样的:
1 SET @TARGET_DATABASE = 'beta'
2 SET @SOURCE_DATABASE = 'sandbox';
3
4 CREATE DATABASE IF NOT EXISTS @TARGET_DATABASE;
5 USE @TARGET_DATABASE;
...
10 INSERT INTO `tableFoo` SELECT * FROM @SOURCE_DATABASE.`tableFoo`;
在第 10 行,我收到一个错误(我并不感到惊讶):“脚本行:10 您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以了解在 '@SOURCE_DATABASE 附近使用的正确语法。tableFoo
’在线上……”
所以我在第 10 行尝试了这个:
10 SET @TABLE=CONCAT('`',@SOURCE_DATABASE,'`','.`tableFoo`');
11 INSERT INTO `tableFoo` SELECT * FROM @TABLE;
...再次出现错误“脚本行:11 您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以获取在行附近 '@TABLE' 附近使用的正确语法...”看吧,10号线运行良好...
有什么方法可以用变量引用数据库中的表吗?
// 谢谢。
如果您连接整个查询,它将起作用。尝试:
set @db = 'mydb';
set @tble = 'table';
set @query = concat('INSERT INTO tablefoo SELECT * FROM ', @db, '.', @tble);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)