Tôi muốn một truy vấn chèn các bản ghi từ bảng này sang bảng khác trong cơ sở dữ liệu khác nếu bảng đích đã tồn tại, nó sẽ thêm các bản ghi vào cuối bảng.
Tôi muốn một truy vấn chèn các bản ghi từ bảng này sang bảng khác trong cơ sở dữ liệu khác nếu bảng đích đã tồn tại, nó sẽ thêm các bản ghi vào cuối bảng.
Câu trả lời:
Còn cái này thì sao:
USE TargetDatabase
GO
INSERT INTO dbo.TargetTable(field1, field2, field3)
SELECT field1, field2, field3
FROM SourceDatabase.dbo.SourceTable
WHERE (some condition)
Làm cách nào để chèn giá trị bảng từ một máy chủ / cơ sở dữ liệu sang cơ sở dữ liệu khác?
1 Tạo Máy chủ được Liên kết {nếu cần} (SQL server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 định cấu hình máy chủ được liên kết để sử dụng Thông tin đăng nhập a) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx
EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'
- KIỂM TRA MÁY CHỦ
SELECT * FROM sys.servers
- THỬ NGHIỆM CÁC MÁY CHỦ LIÊN KẾT
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
CHÈN VÀO BẢNG ĐỊA PHƯƠNG MỚI
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
HOẶC LÀ
CHÈN LÀM GIÁ TRỊ MỚI TRONG BẢNG TỪ XA
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
CHÈN LÀM GIÁ TRỊ BẢNG ĐỊA PHƯƠNG MỚI
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. */
Nếu cả hai bảng có cùng một lược đồ thì hãy sử dụng truy vấn sau: insert vào database_name.table_name select * from new_database_name.new_table_name where = 'condition'
Thay thế database_name bằng tên của cơ sở dữ liệu đầu tiên của bạn và table_name bằng tên bảng mà bạn muốn sao chép từ đó cũng thay new_database_name bằng tên của cơ sở dữ liệu khác mà bạn muốn sao chép và new_table_name là tên của bảng.
Cứ làm đi.....
(Nó sẽ tạo cấu trúc bảng giống như từ bảng này sang bảng khác với cùng dữ liệu)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Đối với SQL Server, bạn có thể sử dụng công cụ Nhập dữ liệu từ Cơ sở dữ liệu khác, Cấu hình các cột ánh xạ dễ dàng hơn.
Hầu hết chúng tôi cần loại truy vấn này trong tập lệnh di chuyển
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
Trong truy vấn này, số lượng cột phải giống nhau trong cả hai bảng