Il modo più rapido per copiare i record da una tabella a un altro server sql

sql sqlbulkcopy sql-server sql-server-2008

Domanda

Ho una tabella di database (Impiegato) con i seguenti campi: EmpID, EmpName. Ho una seconda tabella (EmployeeVersion) con i seguenti campi: PKID (auto), EmpID, EmpName, Month, Year.

Quale sarebbe il modo più rapido per copiare i dati dalla tabella Employee alla tabella EmployeeVersion. Il mese, l'anno dovrebbe contenere il mese e l'anno in cui i dati sono stati copiati oi valori inviati alla procedura memorizzata (@Month, @Year) dal codice c #. Si prega di fornire una soluzione per entrambi gli scenari.

Per quanto ne so, non posso usare la seguente istruzione perché il numero di colonne non corrisponde in entrambe le tabelle:

Insert Into EmployeeVersion (EmpID, EmpName, Month, Year) select * from Employee

Per favore consiglio Grazie.

Risposta accettata

È necessario specificare le colonne nell'istruzione select e le parole riservate di escape utilizzate come nomi delle colonne Month, Year with [] :

Insert Into EmployeeVersion (EmpID, EmpName, [Month], [Year])  
select EmpId, EmpName, MONTH(GETDATE(), YEAR(GETDATE()) from Employee

E stored procedure:

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

Risposta popolare

Perché memorizzi mese e anno in colonne separate? Perché non inserire semplicemente la data in cui i dati vengono inseriti?

Insert Into EmployeeVersion (EmpID, EmpName, Month, Year)
    select EmpID, EmpName, month(getdate()), year(getdate())
    from Employee;

Nota che puoi avere una colonna chiamata CreatedAt che viene assegnata automaticamente. Lo definiresti come:

create table . . .
    CreatedAt datetime not null default getdate()

Quindi l' insert sarebbe simile a:

Insert Into EmployeeVersion (EmpID, EmpName)
    select EmpID, EmpName
    from Employee;


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché