Я хочу, щоб запит вставляв записи з однієї таблиці в іншу таблицю в іншій базі даних, якщо цільова таблиця вже існує, вона повинна додати записи в кінці таблиці.
Я хочу, щоб запит вставляв записи з однієї таблиці в іншу таблицю в іншій базі даних, якщо цільова таблиця вже існує, вона повинна додати записи в кінці таблиці.
Відповіді:
Як щодо цього:
USE TargetDatabase
GO
INSERT INTO dbo.TargetTable(field1, field2, field3)
SELECT field1, field2, field3
FROM SourceDatabase.dbo.SourceTable
WHERE (some condition)
Як вставити значення таблиці з одного сервера / бази даних в іншу базу даних?
1 Створення зв’язаних серверів {за потреби} (SQL Server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 налаштуйте пов’язаний сервер для використання облікових даних а) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx
EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'
- ПЕРЕВІРТЕ СЕРВЕРИ
SELECT * FROM sys.servers
- ТЕСТОВІ ЗВ'ЯЗАНІ СЕРВЕРИ
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
ВСТАВИТИ В НОВУ МІСЦЕВУ СТОЛ
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
АБО
ВСТАВІТЬ ЯК НОВІ ЦІННОСТІ В ДИСТАНЦІЙНУ ТАБЛИЦЮ
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
ВСТАВІТЬ ЯК НОВІ МІСЦЕВІ ТАБЛИЦІ
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. */
Якщо обидві таблиці мають однакову схему, скористайтеся цим запитом: вставте в ім'я_бази даних.таблиця виберіть * з new_database_name.new_table_name where = 'condition'
Замініть ім'я_бази даних на ім'я вашої 1-ї бази даних і ім'я_таблиці на ім'я таблиці, з якої ви хочете скопіювати, також замініть ім'я_нової_бази даних на ім'я вашої іншої бази даних, куди ви хочете скопіювати, а new_table_name - це ім'я таблиці.
Просто зроби це.....
(Це створить ту саму структуру таблиці, що і з таблиці, і до таблиці з однаковими даними)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Для SQL Server можна скористатися інструментом Імпорт даних з іншої бази даних. Простіше конфігурувати стовпці зіставлення.
Здебільшого нам потрібен такий тип запитів у сценарії міграції
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
У цьому запиті кількість стовпців повинна бути однаковою в обох таблицях