从按用户名筛选的SQL Server中提取数据
我的数据库中有一个巨大的表从按用户名筛选的SQL Server中提取数据,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的数据库中有一个巨大的表tableA。我必须提取userA在tableA中的条目 我的目标是将这些数据附加到另一台服务器中,我们将在其中进行构建 询问 select * from tableA where name = 'userA' 将给出select语句。但是如何将insert语句作为脚本获取,以便在新数据库中运行时,所有条目都应插入到新表中 最后,我想将脚本提取出来,并将其作为脚本提供给构建人员。是否需要脚本从表a插入新表(表B)? 如果该表位于同一服务器中,则只需执行以下操作:
tableA
。我必须提取userA
在tableA
中的条目
我的目标是将这些数据附加到另一台服务器中,我们将在其中进行构建
询问
select *
from tableA
where name = 'userA'
将给出select语句。但是如何将insert语句作为脚本获取,以便在新数据库中运行时,所有条目都应插入到新表中
最后,我想将脚本提取出来,并将其作为脚本提供给构建人员。是否需要脚本从表a插入新表(表B)? 如果该表位于同一服务器中,则只需执行以下操作:
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
作为起点,如果没有空值的列,可以尝试以下查询序列:
#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');
为什么要生成脚本?sql中有内置的generate脚本,您可以在其中从1个表中获取所有数据。该工具将提供整个表的数据,其中包括来自其他用户的条目。这个表包含100万条记录我看,新数据库在同一台服务器上吗,如果是同一台服务器,您可以通过调用数据库名称或使用同义词snope直接执行此操作,它是另一台服务器。如果这是一个常规的计划进程,您是否考虑过SSI?