将记录从一台 table 复制到另一台 sql 服务器的最快方法
Quickest way to copy records from one table to another sql server
我有一个数据库 table(员工),其中包含以下字段:EmpID、EmpName。我有第二个 table (EmployeeVersion),其中包含以下字段:PKID(auto)、EmpID、EmpName、Month、Year。
将数据从 Employee table 复制到 EmployeeVersion table 的最快方法是什么。月、年将包含复制数据时的月份和年份,或者包含从 C# 代码发送到存储过程(@Month、@Year)的值。请为这两种情况提供解决方案。
据我所知,我无法使用以下语句,因为两个 table 中的列数不匹配:
Insert Into EmployeeVersion (EmpID, EmpName, Month, Year) select * from Employee
请指教。谢谢
您必须在 select 中指定列:
Insert into EmployeeVersion SELECT EmpId, EmpName, MONTH(getdate()), YEAR(getdate()) from Employee
此致。
为什么要将月份和年份存储在不同的列中?为什么不直接在插入数据时输入日期?
Insert Into EmployeeVersion (EmpID, EmpName, Month, Year)
select EmpID, EmpName, month(getdate()), year(getdate())
from Employee;
请注意,您可以自动分配名为 CreatedAt
的列。您可以将其定义为:
create table . . .
CreatedAt datetime not null default getdate()
那么 insert
看起来像:
Insert Into EmployeeVersion (EmpID, EmpName)
select EmpID, EmpName
from Employee;
您应该在 select 语句中指定列,并将用作列名称 Month, Year
的保留字转义为 []
:
Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year])
select EmpId, EmpName, MONTH(GETDATE(), YEAR(GETDATE()) from Employee
和存储过程:
CREATE PROCEDURE [dbo].[CopyEmployee]
@Month INT,
@Year INT
AS
BEGIN
SET NOCOUNT ON;
Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year])
select EmpId, EmpName, @Month AS [Month], @Year AS [Year] from Employee;
END
GO
我有一个数据库 table(员工),其中包含以下字段:EmpID、EmpName。我有第二个 table (EmployeeVersion),其中包含以下字段:PKID(auto)、EmpID、EmpName、Month、Year。
将数据从 Employee table 复制到 EmployeeVersion table 的最快方法是什么。月、年将包含复制数据时的月份和年份,或者包含从 C# 代码发送到存储过程(@Month、@Year)的值。请为这两种情况提供解决方案。
据我所知,我无法使用以下语句,因为两个 table 中的列数不匹配:
Insert Into EmployeeVersion (EmpID, EmpName, Month, Year) select * from Employee
请指教。谢谢
您必须在 select 中指定列:
Insert into EmployeeVersion SELECT EmpId, EmpName, MONTH(getdate()), YEAR(getdate()) from Employee
此致。
为什么要将月份和年份存储在不同的列中?为什么不直接在插入数据时输入日期?
Insert Into EmployeeVersion (EmpID, EmpName, Month, Year)
select EmpID, EmpName, month(getdate()), year(getdate())
from Employee;
请注意,您可以自动分配名为 CreatedAt
的列。您可以将其定义为:
create table . . .
CreatedAt datetime not null default getdate()
那么 insert
看起来像:
Insert Into EmployeeVersion (EmpID, EmpName)
select EmpID, EmpName
from Employee;
您应该在 select 语句中指定列,并将用作列名称 Month, Year
的保留字转义为 []
:
Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year])
select EmpId, EmpName, MONTH(GETDATE(), YEAR(GETDATE()) from Employee
和存储过程:
CREATE PROCEDURE [dbo].[CopyEmployee]
@Month INT,
@Year INT
AS
BEGIN
SET NOCOUNT ON;
Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year])
select EmpId, EmpName, @Month AS [Month], @Year AS [Year] from Employee;
END
GO