2013-07-11 11 views
8

Tôi có hai cơ sở dữ liệu, một cơ sở dữ liệu được gọi là Natalie_playground và một được gọi là LiveDB. Vì tôi muốn thực hành chèn, cập nhật mọi thứ, tôi muốn sao chép một số bảng từ số LiveDB đến Natalie_playground.SQL Server Sao chép các bảng từ một cơ sở dữ liệu sang một cơ sở dữ liệu khác

Các bảng tôi muốn sao chép được gọi là: Customers, Computers, Cellphones, Prices

Những gì tôi cố gắng làm là (sử dụng SSMS) nhấp chuột phải vào một bảng nhưng không có bản sao ở đó!

+0

Trong cả hai cơ sở dữ liệu tồn tại cùng một bảng (với cùng cấu trúc)? chỉ bạn mới muốn vượt qua một dữ liệu? –

+2

bản sao có thể có của [SQL Server 2008: sao chép nội dung của tất cả các bảng từ một cơ sở dữ liệu vào cơ sở dữ liệu khác] (http://stackoverflow.com/questions/4028104/sql-server-2008-copying-the-contents-of-all -tables-from-one-database-into-anoth) và [Cách sao chép một bảng từ cơ sở dữ liệu sang cơ sở dữ liệu/bảng khác trong SQL Server] (http://stackoverflow.com/q/187770/62576), cả hai được liệt kê trong danh sách 'Liên quan' ở bên phải câu hỏi của bạn. === >>> Xin vui lòng làm ít nhất một tìm kiếm cơ bản ở đây trước khi đăng một câu hỏi mới để xem nếu nó đã được yêu cầu (và trả lời) trước đây. Cảm ơn. –

+0

@natalia, Ken có lý do, đối với câu hỏi này, thông thường câu trả lời đã tồn tại. Cảm ơn. –

Trả lời

9

Giả sử rằng bạn có hai cơ sở dữ liệu, ví dụ A và B:

  • Nếu bảng mục tiêu không tồn tại, kịch bản sau đây sẽ tạo ra (tôi không khuyên bạn nên theo cách này):

    SELECT table_A.FIELD_1, table_A.FIELD_2,......, table_A.FIELD_N 
    INTO COPY_TABLE_HERE 
    FROM A.dbo.table_from_A table_A 
    
  • Nếu bảng mục tiêu tồn tại, sau đó:

    INSERT INTO TABLE_TARGET 
    SELECT table_A.FIELD_1, table_A.FIELD_2,......, table_A.FIELD_N 
    FROM A.dbo.table_from_A table_A 
    

Lưu ý: nếu bạn muốn tìm hiểu và thực hành điều này, bạn có thể sử dụng các tập lệnh trước đó, nhưng nếu bạn muốn sao chép cấu trúc và dữ liệu hoàn chỉnh từ cơ sở dữ liệu sang cơ sở dữ liệu khác, bạn nên sử dụng "Sao lưu và khôi phục cơ sở dữ liệu" hoặc "Tạo cơ sở dữ liệu tập lệnh dữ liệu "và chạy nó vào cơ sở dữ liệu khác.

+0

Bạn có thể làm điều này mà không chọn tên trường một cách rõ ràng? –

8

Nhấp chuột phải vào cơ sở dữ liệu của bạn -> dưới Nhiệm vụ chọn Tạo script, hãy làm theo các hướng dẫn, chọn bảng của bạn và kiểm tra các hộp kiểm cho biết 'kịch bản bảng dữ liệu' (hoặc tương tự) tạo ra nó vào một SQL script và thực hiện nó trên DB khác của bạn.

4

Bạn cũng có thể dùng thử Trình hướng dẫn nhập/xuất SQL Server. Nếu các bảng mục tiêu không tồn tại, chúng sẽ được tạo khi bạn chạy trình hướng dẫn.

Kiểm tra MSDN để biết thêm chi tiết http://msdn.microsoft.com/en-us/library/ms141209.aspx

+0

Có lẽ đơn giản và tốn ít thời gian nhất. +1 – LegendaryDude

0

thử này

USE TargetDatabase 
GO 

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

Nếu bạn muốn sao chép chỉ giản đồ của bảng, bạn có thể thêm một điều kiện giả đến hết thắc mắc nêu.

ví dụ:

SELECT table_A.FIELD_1, ..., table_A.FIELD_N 
INTO LiveDB.custom_table 
FROM Natalie_playground.dbo.custom_table table_A 
WHERE 0 > 1 
1

Hãy thử điều này:

Nếu bảng mục tiêu là tồn tại:

SELECT SourceTableAlias.* 
INTO TargetDB.dbo.TargetTable 
FROM SourceDB.dbo.SourceTable SourceTableAlias 

Và nếu bảng mục tiêu là không tồn tại:

INSERT INTO TargetDB.dbo.TargetTable 
SELECT SourceTableAlias.* 
FROM SourceDB.dbo.SourceTable SourceTableAlias 

Good Luck!