Làm cách nào để chèn giá trị bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác? [đóng cửa]


89

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:


156

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)

3
10 năm sau ... vẫn được đánh giá cao.
Chris Catignani

@ChrisCatignani: cảm ơn! Một số câu trả lời được thực hiện cho vĩnh cửu ;-)
marc_s

33

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

10

Đây là một phương pháp nhanh chóng và dễ dàng:

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

Bạn co thể thử

Insert into your_table_in_db1 select * from your_table_in_db2@db2SID 

db2SID là bên lề của DB khác. Nó sẽ có trong tệp tnsnames.ora


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

Không có cái gọi là "cuối bảng" trong cơ sở dữ liệu quan hệ.


0

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.


0

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;

0

Đố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.


0

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.