从另一个数据库INSERT INTO数据库,在SQL Server中指定一些值

时间:2017-07-27 16:43:49

标签: sql-server database sql-server-2008 sql-insert

我对此进行了研究,但没有找到针对此案例的特定解决方案。 我有两个表,每个表在不同的数据库中。

我们说它们是DB1.T1DB2.T2

DB1.T1开始,我想从两个特定列IDDescription中选择所有行。

DB2.T2具有相同的两列,但还有三列:T2.IDEnableDate

一些考虑因素。 DB2.T2是一个SQL Server,我一直在使用MySQL,但是这个SQL Server与我之前的经历有一些不一致之处。 AUTOINCREMENT默认条件不存在,并且创建新记录时插入的默认时间戳或日期值也不可用。

从我的研究中我得到了一些可能的解决方案

INSERT INTO DB2.T2(ID, Description, Enable, Code ,Date)
    SELECT ID, Description 
    FROM DB1.T1;

但我如何添加其余三列呢?

我正在考虑做一些while循环,并使用允许的GETDATE()函数将增量作为ID插入DB2.T2,但我不知道如何立即执行。

我可以使用select INTO的先前语法,还可以使用INSERT INTO做这样的事情吗?

INSERT INTO DB2.T2(ID, Description, Enable, Code, Date) 
VALUES (index,?,1,?,GETDATE())

我现在真的很困惑。我希望你能得到我想要解释的内容。

除了将数据从一个表导出到另一个表之外,我还想在其余列中插入其他数据。对于启用,我希望它始终为1,并且当前日期的日期,ID必须是数字,并且必须根据行递增。

你建议做什么?

与此同时,我将继续努力寻找类似解决方案。

提前致谢。 :)

其他数据。我正在通过远程连接上的VPN工作,我所拥有的是某种用于插入和使用数据库的cmd接口。有20000行,使用批量导入CSV导出对我来说似乎很奇怪。

1 个答案:

答案 0 :(得分:2)

除非我遗漏了什么,否则你可以使用:

INSERT INTO DB2.T2(ID, Description, Enable, Code ,Date) 
SELECT ID, Description, 1 ,null,getdate() FROM DB1.T1;

当您开始考虑循环时,请停止并重新审视问题。几乎总是一种更好的方式。

如果ID应该递增而不是基于DB1.T1中的内容,请查看在DB2 IDENTITY()中创建该列。如果这样做,那么您只需将ID从插入中删除,SQL Server将自行处理。