2017-07-06 65 views
0

我需要將插入(我將恢復到我的source_database中的每月備份)到dest_database中,並添加一個新的DATE字段,以指出哪個月是數據從。所以最後一切都將在dest_database中,DATE字段指定它屬於哪個月份。從現有表插入到新表中並添加新字段

我該怎麼做?

INSERT INTO dest_table 
(SELECT * 
FROM source_table) 
+0

使用一個月(GETDATE())來獲取月份 – Nithin

回答

2

您需要指定列名並添加額外的列。

請參閱下面的sql中的new_date_col1

INSERT INTO dest_table (old_col1, old_col2, new_date_col1) 
SELECT old_col1, old_col2, getdate() FROM source_table 
+0

這是正確的答案 –

+0

這個工作。謝謝! –

0

假設你已經創建了dest_table具有相同的字段和數據類型爲source_table,你只需要一列於表插入之前添加。

create table dest_table 
(column1 <datatype>, 
..., 
..., 
LoadDate datetime); 
GO 

insert into dest_table (column1,...,LoadDate) 
select 
    column1, 
    ..., 
    getdate() 
from source_table 

或者,乾脆

select 
    column1, 
    ..., 
    getdate() 
into dest_table 
from source_table 
0

你可以做到這一點如下圖所示

INSERT INTO newTable (col1, col2, col3, DATE_Field) 
SELECT column1, column2, column3, GETDATE() 
FROM oldTable 
+0

儘管OP確實表示他們想要它屬於哪個月,但我會提醒注意,因爲如果數據跨越多年,您將不知道該月份屬於哪一年。 – scsimon

+0

我更新了我的答案。你是對的! –

0

如果source_tabledest_table表定義相同,只是額外TimeStamp列均相同,可以這樣做:

INSERT INTO dest_table 
SELECT *,MONTH(GETDATE()) 
FROM source_table 

否則,你需要指定的映射關係,例如:

INSERT INTO dest_table (col1,col2...,Date_Column) 
SELECT col3,col4...,MONTH(GETDATE()) 
FROM source_table 
+0

儘管OP確實表示他們想要它屬於的月份,但我會提醒你不要這樣做,因爲如果數據跨越多年,你不會知道該月份屬於哪一年。 – scsimon

+0

你是對的,但不知道真正的場景是什麼xD – LONG

相關問題