2011-11-27 98 views
16

Tôi vừa tạo một cơ sở dữ liệu trống trên máy của mình. Bây giờ tôi muốn sao chép một bảng từ cơ sở dữ liệu máy chủ của chúng tôi đến cơ sở dữ liệu cục bộ này.Sao chép bảng từ một cơ sở dữ liệu sang một cơ sở dữ liệu khác

Tôi cần chạy lệnh sql nào để thực hiện việc này? Tôi muốn tạo bảng mới, sao chép dữ liệu từ bảng cũ và chèn nó vào bảng mới.

+1

Bạn có thể tạo ra một kịch bản SQL INSERT. Xem http://stackoverflow.com/questions/7515110/create-sql-insert-script-with-values-gathered-from-table – mhenry1384

Trả lời

24

Create a linked server đến máy chủ nguồn. Cách dễ nhất là nhấp chuột phải vào "Máy chủ được liên kết" trong Management Studio; nó nằm trong Quản lý -> Đối tượng máy chủ.

Sau đó, bạn có thể sao chép bảng bằng cách sử dụng một tên 4 phần, server.database.schema.table:

select * 
into DbName.dbo.NewTable 
from LinkedServer.DbName.dbo.OldTable 

này sẽ vừa tạo ra bảng mới với cấu trúc giống như một bản gốc và sao chép dữ liệu qua.

+2

+1 câu trả lời duy nhất có tính đến các cơ sở dữ liệu đó có trên ** máy chủ ** khác nhau! –

+0

Sẽ không hoạt động nếu bạn đang làm việc với SQL Server 2000 và 2012+ https://connect.microsoft.com/SQLServer/feedback/details/731869/using-sqlncli10-to-create-a-linked-server-to- sql-server-2000-nguyên nhân-a-lỗi – sojim2

+0

Giải pháp cho SQL Server 2000 và 2012+ tại đây (trả lời bằng phiếu bầu cao nhất, không phải câu trả lời được đánh dấu): http://stackoverflow.com/questions/187770/copy-tables- Từ một cơ sở dữ liệu đến máy chủ khác trong sql-server – sojim2

6

SELECT ... INTO:

select * into <destination table> from <source table> 
6

Giả sử rằng họ đang ở trong cùng một máy chủ, hãy thử này:

SELECT * 
INTO SecondDB.TableName 
FROM FirstDatabase.TableName 

này sẽ tạo ra một bảng mới và chỉ cần sao chép các dữ liệu FirstDatabase.TableName-SecondDB.TableName và sẽ không tạo ra các phím nước ngoài hoặc chỉ số.

1

Cách nhanh nhất là sử dụng công cụ, như RazorSQL hoặc Toad để thực hiện việc này.

2

Giả sử bạn muốn các tên khác nhau cho các bảng.

Nếu bạn đang sử dụng PHPmyadmin, bạn có thể sử dụng tùy chọn SQL của họ trong trình đơn. Sau đó, bạn chỉ cần sao chép mã SQL từ bảng đầu tiên và dán nó vào bảng mới.

Điều đó có hiệu quả đối với tôi khi tôi chuyển từ máy chủ cục bộ sang máy chủ web. Hy vọng nó hoạt động cho bạn!

+0

Đối với các bảng rất lớn có mã SQL sẽ là một nỗi đau để sao chép và dán, các menu ** Nhập ** và ** Xuất ** của PHPmyadmin có thể dễ dàng được sử dụng như tốt. – tmnol

3
INSERT INTO ProductPurchaseOrderItems_bkp 
     (
     [OrderId], 
     [ProductId], 
     [Quantity], 
     [Price] 
    ) 
SELECT 
     [OrderId], 
     [ProductId], 
     [Quantity], 
     [Price] 
FROM ProductPurchaseOrderItems 
    WHERE OrderId=415 
1

Nếu bạn cần toàn bộ cấu trúc bảng (không chỉ là cách bố trí dữ liệu cơ bản), sử dụng Task>Script Table As>Create To>New Query Window và chạy trong cơ sở dữ liệu mới của bạn. Sau đó, bạn có thể sao chép dữ liệu khi rảnh rỗi.

4

Nếu di chuyển liên tục giữa hai cơ sở dữ liệu, sau đó chèn vào cấu trúc bảng đã tồn tại là một khả năng. Nếu vậy, thì:

Sử dụng cú pháp sau:

insert into DESTINATION_DB.dbo.destination_table 
select * 
    from SOURCE_DB.dbo.source_table 
[where x ...] 

Nếu di chuyển một LOT các bảng (hoặc bảng với các phím nước ngoài hạn chế) tôi khuyên bạn nên:

  • Scripts Tạo với Tùy chọn nâng cao/Các loại dữ liệu cho tập lệnh: Chỉ dữ liệu HOẶC
  • Resort sử dụng công cụ của bên thứ ba.

Hy vọng điều đó sẽ hữu ích!

7

Một phương pháp khác có thể được sử dụng để sao chép bảng từ cơ sở dữ liệu nguồn sang đích là trình hướng dẫn xuất và nhập SQL Server, có sẵn trong SQL Server Management Studio.

Bạn có thể chọn xuất từ ​​cơ sở dữ liệu nguồn hoặc nhập từ đích đến để chuyển dữ liệu.

Phương pháp này là cách nhanh chóng để sao chép bảng từ cơ sở dữ liệu nguồn sang đích, nếu bạn sắp xếp sao chép các bảng không quan tâm đến mối quan hệ và đơn đặt hàng của bảng.

Khi sử dụng phương pháp này, chỉ mục và khóa của bảng sẽ không được chuyển. Nếu bạn quan tâm đến việc sao chép nó, bạn cần tạo các kịch bản lệnh cho các đối tượng cơ sở dữ liệu này.

Nếu đây là các Khóa ngoại, hãy kết nối các bảng này với nhau, bạn cần xuất dữ liệu theo đúng thứ tự, nếu không trình hướng dẫn xuất sẽ thất bại.

Hãy đọc thêm về phương pháp này, cũng như về một số phương pháp hơn (bao gồm tạo ra các script, SELECT INTO và các công cụ của bên thứ ba) trong bài viết này: https://www.sqlshack.com/how-to-copy-tables-from-one-database-to-another-in-sql-server/

Các vấn đề liên quan