streda 30. novembra 2011

Kópia SQL Server tabuliek bez kopírovania dát

Nie je vôbec nezvyčajné, že potrebujete skopírovať štruktúry tabuľky (väčšinou dočasne). Ak potrebujete aj kópiu dát môžete jednoducho použiť SELECT INTO:

SELECT *
INTO Employees2
FROM Employees (NOLOCK)

V tomto prípade SQL Server vytvorí novú tabuľku Employees2, ktorá presne zodpovedá štruktúre tabuľky Employees1 a skopíruje do nej všetky dáta. Ak sa nepotrebujete dáta v novej tabuľke, vždy môžete použiť TRUNCATE Employees2.

Jednoduchšie (a zvyčajne rýchlejšie) riešenie je nekopírovať dáta. Na dosiahnutie tohto cieľa v jednom kroku, tu je šikovný trik pomocou syntaxe SELECT INTO s klauzulou WHERE, ktorá nevráti žiadne riadky:

SELECT *
INTO Employees2
FROM Employees (NOLOCK)
WHERE 1 = 0

Aj napriek tomu, že dopyt nevráti žiadne riadky, SQL Server aj tak vytvorí druhú tabuľku! Rovnakú syntax môžete tiež použiť na vytvorenie dočasnej tabuľky, ktorá zodpovedá súčasnej štruktúre tabuľky.