ฉันต้องการให้แบบสอบถามแทรกระเบียนจากตารางหนึ่งไปยังตารางอื่นในฐานข้อมูลอื่นหากมีตารางปลายทางอยู่แล้วก็ควรต่อท้ายระเบียนที่ท้ายตาราง
ฉันต้องการให้แบบสอบถามแทรกระเบียนจากตารางหนึ่งไปยังตารางอื่นในฐานข้อมูลอื่นหากมีตารางปลายทางอยู่แล้วก็ควรต่อท้ายระเบียนที่ท้ายตาราง
คำตอบ:
แล้วสิ่งนี้ล่ะ:
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 กำหนดค่าเซิร์ฟเวอร์ที่เชื่อมโยงเพื่อใช้ข้อมูลประจำตัว a) 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
นี่เป็นวิธีที่ง่ายและรวดเร็ว:
CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;
--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. */
คุณสามารถลอง
Insert into your_table_in_db1 select * from your_table_in_db2@db2SID
db2SID เป็น sid ของ DB อื่น จะปรากฏในไฟล์ tnsnames.ora
INSERT
INTO remotedblink.remotedatabase.remoteschema.remotetable
SELECT *
FROM mytable
ไม่มีสิ่งที่เรียกว่า "ท้ายตาราง" ในฐานข้อมูลเชิงสัมพันธ์
ส่วนใหญ่เราต้องการแบบสอบถามประเภทนี้ในสคริปต์การย้ายข้อมูล
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
ในจำนวนคอลัมน์คิวรีนี้ต้องเหมือนกันในทั้งสองตาราง
หากทั้งสองตารางมีสคีมาเดียวกันให้ใช้แบบสอบถามนี้: แทรกลงใน database_name.table_name เลือก * จาก new_database_name.new_table_name โดยที่ = 'condition'
แทนที่ database_name ด้วยชื่อของฐานข้อมูลที่ 1 ของคุณและ table_name ด้วยชื่อของตารางที่คุณต้องการคัดลอกและแทนที่ new_database_name ด้วยชื่อของฐานข้อมูลอื่นของคุณที่คุณต้องการคัดลอกและ new_table_name คือชื่อของตาราง
แค่ทำมัน.....
(จะสร้างโครงสร้างตารางเดียวกันกับจากตารางเป็นตารางที่มีข้อมูลเดียวกัน)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
สำหรับ SQL Server คุณสามารถใช้เครื่องมือนำเข้าข้อมูลจากฐานข้อมูลอื่นได้ง่ายกว่าในการกำหนดค่าคอลัมน์การแมป