【问题标题】:Import Data to Existing Table将数据导入现有表
【发布时间】:2018-02-26 06:32:16
【问题描述】:

如何在sql中将数据从另一个数据库导入数据库中的现有表

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

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

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

谢谢

【问题讨论】:

  • 您使用的是 SQL Server 吗?请使用您正在使用的实际数据库进行标记。此外,您可以在发布之前尝试在 Stack Overflow 上搜索您的问题。
  • 也提供一些有关表架构的详细信息

标签: sql-server tsql sql-insert


【解决方案1】:
INSERT INTO Target_Table(Column1, Column2, Column3)  
SELECT Column1, Column2, Column3  
FROM Source_Database.Source_Table

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
【解决方案2】:

你可以试试

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(Column AS DATE) AS [Column_Name]。

【讨论】:

【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    错误信息实际上为您提供了您正在寻找的答案:

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

    编辑

    TIMESTAMP 列不能被显式写入,并且您需要从插入语句中排除该列,或者...如果您确实希望从源表中移动时间戳数据,那么您将需要更改类型目标表中的相应字段。

    【讨论】:

      【解决方案5】:

      试试这个:

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

      【讨论】:

      • 这与问题中的查询有何不同?
      猜你喜欢
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2013-05-02
      • 1970-01-01
      • 2013-12-03
      • 2011-06-08
      • 2014-01-31
      相关资源
      最近更新 更多