จะแทรกค่าตารางจากฐานข้อมูลหนึ่งไปยังฐานข้อมูลอื่นได้อย่างไร? [ปิด]


91

ฉันต้องการให้แบบสอบถามแทรกระเบียนจากตารางหนึ่งไปยังตารางอื่นในฐานข้อมูลอื่นหากมีตารางปลายทางอยู่แล้วก็ควรต่อท้ายระเบียนที่ท้ายตาราง

คำตอบ:


160

แล้วสิ่งนี้ล่ะ:

USE TargetDatabase
GO

INSERT INTO dbo.TargetTable(field1, field2, field3)
   SELECT field1, field2, field3
     FROM SourceDatabase.dbo.SourceTable
     WHERE (some condition)

4
10 ปีต่อมา ...
Chris Catignani

@ChrisCatignani: ขอบคุณ! คำตอบบางอย่างสร้างขึ้นเพื่อนิรันดร์ ;-)
marc_s

34

จะแทรกค่าตารางจากเซิร์ฟเวอร์ / ฐานข้อมูลหนึ่งไปยังฐานข้อมูลอื่นได้อย่างไร?

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

10

นี่เป็นวิธีที่ง่ายและรวดเร็ว:

CREATE TABLE database1.employees
AS
SELECT * FROM database2.employees;

10
    --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. */

6

คุณสามารถลอง

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

db2SID เป็น sid ของ DB อื่น จะปรากฏในไฟล์ tnsnames.ora


1
INSERT
INTO    remotedblink.remotedatabase.remoteschema.remotetable
SELECT  *
FROM    mytable

ไม่มีสิ่งที่เรียกว่า "ท้ายตาราง" ในฐานข้อมูลเชิงสัมพันธ์


1

ส่วนใหญ่เราต้องการแบบสอบถามประเภทนี้ในสคริปต์การย้ายข้อมูล

INSERT INTO  db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
  FROM db1.table2

ในจำนวนคอลัมน์คิวรีนี้ต้องเหมือนกันในทั้งสองตาราง


0

หากทั้งสองตารางมีสคีมาเดียวกันให้ใช้แบบสอบถามนี้: แทรกลงใน database_name.table_name เลือก * จาก new_database_name.new_table_name โดยที่ = 'condition'

แทนที่ database_name ด้วยชื่อของฐานข้อมูลที่ 1 ของคุณและ table_name ด้วยชื่อของตารางที่คุณต้องการคัดลอกและแทนที่ new_database_name ด้วยชื่อของฐานข้อมูลอื่นของคุณที่คุณต้องการคัดลอกและ new_table_name คือชื่อของตาราง


0

แค่ทำมัน.....

(จะสร้างโครงสร้างตารางเดียวกันกับจากตารางเป็นตารางที่มีข้อมูลเดียวกัน)

 create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;

0

สำหรับ SQL Server คุณสามารถใช้เครื่องมือนำเข้าข้อมูลจากฐานข้อมูลอื่นได้ง่ายกว่าในการกำหนดค่าคอลัมน์การแมป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.