我的数据库中有一个巨大的表tableA
。我必须通过tableA
提取这个userA
中的条目。
我的目标是将这些数据附加到我们提供构建的另一台服务器上。
查询
select *
from tableA
where name = 'userA'
将给出select语句。但是如何将insert语句作为脚本获取,以便在新数据库中运行时,所有条目都应插入到新表中?
总而言之,我想提取脚本并将其作为脚本提供给我所有记录的构建人员。
答案 0 :(得分:0)
您是否需要从表A插入新表(TableB)的脚本? 如果表位于同一服务器中,则只需要:
Insert into TableB (Col1, Col2, Col3)
select Col1, Col2, Col3 from TableA
如果表位于不同的服务器中。首先,您必须在服务器之间和执行脚本
之后创建链接服务器Insert into Server2.TableB (Col1, Col2, Col3)
select Col1, Col2, Col3 from Server1.TableA
答案 1 :(得分:0)
作为一个起点,如果您没有包含NULL值的列,则可以尝试以下查询序列:
#get fields in a mysql variable
select GROUP_CONCAT(CONCAT('`', `column_name`, '`'))
from `information_schema`.`COLUMNS` where TABLE_NAME='tableA' into @fields;
#get the query which will generate the insert command in a variable
select CONCAT("SELECT CONCAT(\'INSERT INTO tableA(",@fields,
")VALUES(\\\'\',CONCAT_WS(\"\',\'\",",@fields,
"),\"\');\") as `INSERT COMMAND` from `tableA` where `name`='userA'")
into @generateInsertCommand;
#execute the query which will generate insert command
PREPARE stmt FROM @generateInsertCommand;
EXECUTE stmt;
它应该产生这样的东西:
INSERT INTO tableA(`id`,`date1`,`int1`,`name`)VALUES('4','2015-10-21','127','userA');
INSERT INTO tableA(`id`,`date1`,`int1`,`name`)VALUES('5','2015-10-20','327','userA');