我对此进行了研究,但尚未找到针对这种情况的特定解决方案。 我有两个表,每个表位于不同的数据库中。
假设它们是 DB1.T1
和 DB2.T2
。
从 DB1.T1
我想从两个特定列 ID
和 Description
中选择所有行。
DB2.T2
具有相同的两列,但还有另外三个列:T2.ID
、Enable
、Date
.
一些注意事项。 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()
函数插入增量作为 DB2.T2 的 ID,但我不确定如何立即执行此操作。
我可以使用 select INTO 的先前语法并使用 INSERT INTO 来执行类似的操作吗?
INSERT INTO DB2.T2(ID, Description, Enable, Code, Date)
VALUES (index,?,1,?,GETDATE())
我现在真的很困惑。我希望您能明白我想要解释的内容。
除了将数据从一个表导出到另一个表之外,我还想向其余列插入其他数据。对于启用,我希望它始终为 1,日期为当前日期,ID 必须是数字,并且必须根据行递增。
你建议做什么?
同时,我将继续努力寻找类似的解决方案来解决这个问题。
提前致谢。 :)
附加数据。我通过 VPN 在远程连接上工作,我所拥有的只是某种用于插入和使用数据库的 cmd 界面。大约有 20000 行,并且使用批量通过 CSV 导入导出对我来说似乎很奇怪。
最佳答案
除非我遗漏了什么,否则你可以使用:
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 将自行处理。
关于sql-server - 从另一个数据库插入数据库,在 SQL Server 中指定一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45356581/