将数据从 SQL 服务器 table 复制到历史 table 并添加复制时间的时间戳?

Copy data from a SQL Server table into a historic table and add a timestamp of the time copied?

我正在尝试找出一种特定的方法来从特定的 table(我们称之为 opportunities)复制所有数据并将其复制到新的 table,使用复制到新 table 中的日期时间戳,其唯一目的是将历史数据生成到托管在 Azure Data Warehousing.

中的数据库中

最好的方法是什么?到目前为止,我已经在数据仓库中创建了一个副本 table,并添加了一个名为 datecopied

的列

我开始使用的查询是:

SELECT OppName, Oppvalue
INTO Hst_Opportunities
FROM dbo.opportunities

我不确定从这里到哪里去!

您可以像下面这样将插入 select 查询写入 SQL Server 2008 +、Azure SQL 数据仓库

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

SELECT INTO 目前在 Azure SQL 数据仓库中不受支持。您应该熟悉 CREATE TABLE AS or CTAS 语法,它在 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 数据库。