将数据从SQL Server表复制到历史表中并添加复制时间的时间戳?

时间:2017-02-01 05:14:31

标签: sql-server azure-sql-database data-warehouse azure-data-factory

我正在尝试找出一种特定的方法来复制特定表中的所有数据(让我们称之为opportunities)并将其复制到一个新表中,并将日期的时间戳复制到新表中,仅用于将历史数据生成到Azure Data Warehousing中托管的数据库中。

最好的方法是什么?到目前为止,我已经离开并在数据仓库中创建了一个重复的表,其中包含一个名为datecopied的附加列

我开始使用的查询是:

SELECT OppName, Oppvalue
INTO Hst_Opportunities
FROM dbo.opportunities

我不确定从哪里开始!

2 个答案:

答案 0 :(得分:2)

目前,Azure SQL数据仓库中不支持

SELECT INTO。您应该熟悉CREATE TABLE ASCTAS语法,这在Azure DW中是等效的。

如果您想修复复制日期,只需将其分配给CTAS之前的变量,如下所示:

DECLARE @copyDate DATETIME2 = CURRENT_TIMESTAMP

CREATE TABLE dbo.Hst_Opportunities
WITH
(
    CLUSTERED COLUMNSTORE INDEX,
    DISTRIBUTION = ROUND_ROBIN
)
AS 
SELECT OppName, Oppvalue, @copyDate AS copyDate
FROM dbo.opportunities;

我还应该提一下,Azure DW的用例是数百万和数十亿行,带有数TB的数据。它不会在低容量时表现良好,因此请考虑您是否需要此产品,传统的SQL Server 2016安装或Azure SQL数据库。

答案 1 :(得分:1)

您可以将insert插入到下面的select查询中,该查询将与SQL Server 2008 +,Azure SQL数据仓库一起使用

INSERT INTO Hst_Opportunities 
   SELECT OppName, Oppvalue, DATEDIFF(SECOND,{d '1970-01-01'},current_timestamp) 
   FROM dbo.opportunities