我需要将插入(我将恢复到我的source_database中的每月备份)到dest_database中,并添加一个新的DATE字段,以指出哪个月是数据从。所以最后一切都将在dest_database中,DATE字段指定它属于哪个月份。从现有表插入到新表中并添加新字段
我该怎么做?
INSERT INTO dest_table
(SELECT *
FROM source_table)
我需要将插入(我将恢复到我的source_database中的每月备份)到dest_database中,并添加一个新的DATE字段,以指出哪个月是数据从。所以最后一切都将在dest_database中,DATE字段指定它属于哪个月份。从现有表插入到新表中并添加新字段
我该怎么做?
INSERT INTO dest_table
(SELECT *
FROM source_table)
您需要指定列名并添加额外的列。
请参阅下面的sql中的new_date_col1。
INSERT INTO dest_table (old_col1, old_col2, new_date_col1)
SELECT old_col1, old_col2, getdate() FROM source_table
这是正确的答案 –
这个工作。谢谢! –
假设你已经创建了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
你可以做到这一点如下图所示
INSERT INTO newTable (col1, col2, col3, DATE_Field)
SELECT column1, column2, column3, GETDATE()
FROM oldTable
尽管OP确实表示他们想要它属于哪个月,但我会提醒注意,因为如果数据跨越多年,您将不知道该月份属于哪一年。 – scsimon
我更新了我的答案。你是对的! –
如果source_table
和dest_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
使用一个月(GETDATE())来获取月份 – Nithin