Voglio una query per inserire record da una tabella a un'altra tabella in un database diverso se la tabella di destinazione esiste già, dovrebbe accodare i record alla fine della tabella.
Voglio una query per inserire record da una tabella a un'altra tabella in un database diverso se la tabella di destinazione esiste già, dovrebbe accodare i record alla fine della tabella.
Risposte:
Cosa ne pensi di questo:
USE TargetDatabase
GO
INSERT INTO dbo.TargetTable(field1, field2, field3)
SELECT field1, field2, field3
FROM SourceDatabase.dbo.SourceTable
WHERE (some condition)
Come inserire i valori della tabella da un server / database a un altro database?
1 Creazione di server collegati {se necessario} (SQL server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 configurare il server collegato per utilizzare le credenziali a) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx
EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'
- CONTROLLA SERVER
SELECT * FROM sys.servers
- SERVER COLLEGATI AL TEST
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
INSERIRE NELLA NUOVA TABELLA LOCALE
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
O
INSERIRE COME NUOVI VALORI NELLA TABELLA REMOTA
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
INSERIRE COME NUOVA TABELLA LOCALE VALORI
INSERT
INTO localTABLE
SELECT *
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
--Code for same server
USE [mydb1]
GO
INSERT INTO dbo.mytable1 (
column1
,column2
,column3
,column4
)
SELECT column1
,column2
,column3
,column4
FROM [mydb2].dbo.mytable2 --WHERE any condition
/*
steps-
1- [mydb1] means our opend connection database
2- mytable1 the table in mydb1 database where we want insert record
3- mydb2 another database.
4- mytable2 is database table where u fetch record from it.
*/
--Code for different server
USE [mydb1]
SELECT *
INTO mytable1
FROM OPENDATASOURCE (
'SQLNCLI'
,'Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'
).[mydb2].dbo.mytable2
/* steps -
1- [mydb1] means our opend connection database
2- mytable1 means create copy table in mydb1 database where we want
insert record
3- XXX.XX.XX.XXX - another server name.
4- mydb2 another server database.
5- write User id and Password of another server credential
6- mytable2 is another server table where u fetch record from it. */
Per lo più abbiamo bisogno di questo tipo di query nello script di migrazione
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
In questa query il numero di colonne deve essere lo stesso in entrambe le tabelle
Se entrambe le tabelle hanno lo stesso schema, utilizzare questa query: inserire in database_name.table_name selezionare * da new_database_name.new_table_name dove = 'condition'
Sostituisci nome_database con il nome del tuo primo database e nome_tabella con il nome della tabella da cui desideri copiare e sostituisci anche new_database_name con il nome dell'altro database in cui desideri copiare e new_table_name è il nome della tabella.
Fallo e basta.....
(Creerà la stessa struttura della tabella della tabella come della tabella con gli stessi dati)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Per SQL Server, è possibile utilizzare lo strumento Importa dati da un altro database, è più facile configurare le colonne di mapping.