我对此进行了研究,但没有找到针对此案例的特定解决方案。 我有两个表,每个表在不同的数据库中。
我们说它们是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()
函数将增量作为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导出对我来说似乎很奇怪。
答案 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将自行处理。