Copiare tabella

venerdì 15 aprile 2011 - 10.56

s_dado Profilo | Newbie

Sarà una cosa banale per molti, ma sto incontrando problemi con una frase sql per copiare una tabella.
create table new_table as select *from original_table
dove sbaglio, visto che mi compare un msg di errore di sintassi in prossimità della parola as

grazie

dinoxet Profilo | Senior Member

la sintassi corretta è :
CREATE TABLE new_table_name
[ ( column [, ...] ) ]
AS
SELECT [ ( column [, ...] ) ]
FROM existing table_name


DINOXET
__________________________________________
impossible is only a word

s_dado Profilo | Newbie

non esiste un comando che mi copi anche struttura e dati tutto assieme ?

lbenaglia Profilo | Guru

>Sarà una cosa banale per molti, ma sto incontrando problemi con
>una frase sql per copiare una tabella.
>create table new_table as select *from original_table
>dove sbaglio, visto che mi compare un msg di errore di sintassi
>in prossimità della parola as

Ciao,

Questa sintassi non è compatibile con il Transact-SQL di SQL Server.
Per creare una nuova tabella partendo da un result set restituito da un comando di SELECT devi utilizzare il comando SELECT...INTO:
http://msdn.microsoft.com/en-us/library/ms190750.aspx

Tieni presente che la nuova tabella sarà priva di indici e constraints.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

dinoxet Profilo | Senior Member

quindi così?

SELECT * INTO newtable FROM existingtable

penso
DINOXET
__________________________________________
impossible is only a word

lbenaglia Profilo | Guru

>quindi così?
>
>SELECT * INTO newtable FROM existingtable
>
>penso
Prova


--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

s_dado Profilo | Newbie

Quindi ricapitolando:
select * into original_table from table
ok ?

lbenaglia Profilo | Guru

>Quindi ricapitolando:
>select * into original_table from table
> ok ?

SELECT * INTO dbo.NewTable FROM dbo.SourceTable;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

s_dado Profilo | Newbie

non va,
il nome di oggetto new_table non è valido
forse devo creare proma la tabella ?

lbenaglia Profilo | Guru

>non va,
>il nome di oggetto new_table non è valido
>forse devo creare proma la tabella ?
No.

Esempio completo:

USE tempdb; CREATE TABLE dbo.Students( StudentID int NOT NULL, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL ); INSERT dbo.Students VALUES(1, 'Lorenzo', 'Benaglia') , (2, 'Michele', 'Delfini') , (3, 'Andrea', 'Montanari'); SELECT * INTO dbo.NewStudents FROM dbo.Students; SELECT * FROM dbo.NewStudents; /* Output: StudentID FirstName LastName ----------- ---------- ---------- 1 Lorenzo Benaglia 2 Michele Delfini 3 Andrea Montanari (3 row(s) affected) */ DROP TABLE dbo.Students, dbo.NewStudents;

Ovviamente devi autenticarti con una login avente le permission di CREATE TABLE sul db.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

s_dado Profilo | Newbie

grazie,
sembra un po lungo ma ci provo lo stesso

jenga Profilo | Newbie

se non ricordo male c'è anche un parametro a livello di database per attivare/disattivare la possibilità di creare tabelle tramite INSERT...INTO.
O c'era solo fino a SQL 2000...

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5