将数据导入现有表

时间:2018-02-26 06:32:17

标签: sql-server tsql sql-insert

如何从sql

中的另一个数据库将数据导入数据库中的现有表

我正在尝试这个但不行。这是说

  

'无法在时间戳列中插入显式值。'将INSERT与列列表一起使用以排除时间戳列,或将DEFAULT插入timestamp列。

Insert Into [test].[dbo].[Sample$Employee]
select * from [Test1].[dbo].[Sample1$Employee]

由于

5 个答案:

答案 0 :(得分:0)

你可以尝试

INSERT INTO <database>.<schema>.<table>
SELECT * FROM <source_database>.<schema>.<source_table>

修改后,您需要指定要插入新表的列。

所以你的查询可能是

INSERT INTO <database>.<schema>.<table>([Column1], [Column1], [Column1])
SELECT [Column1],[Column2],[Column3] FROM <source_database>.<schema>.source_table>

正如我从错误消息中看到的那样,您需要隐式定义列类型。

例如:如果列的类型为DATE,则需要使用CAST(列AS DATE)AS [Column_Name]。

答案 1 :(得分:0)

INSERT INTO Target_Table(Column1, Column2, Column3)  
SELECT Column1, Column2, Column3  
FROM Source_Database.Source_Table

答案 2 :(得分:0)

错误消息实际上为您提供了所需的答案:

  

将INSERT与列列表一起使用以排除时间戳列,或将DEFAULT插入时间戳列。

修改

TIMESTAMP列无法显式写入,您需要从insert语句中排除此列,或者......如果您确实希望从源表中移除时间戳数据,则需要更改目标表中相应字段的类型。

答案 3 :(得分:0)

您的表格中有timestamp, aka rowversion类型的列。无法写入此类型的列。

不使用包含您无法复制的列的*,而是写出列列表并省略timestamp类型的列。

答案 4 :(得分:-1)

试试这个:

Select * into SQLShackDemo.HumanResources.Department 
from AdventureWorks2012.HumanResources.Department