Cách hiệu quả nhất để sao chép một lượng lớn hàng từ một bảng trong một cơ sở dữ liệu sang một bảng khác trong cơ sở dữ liệu khác có cấu trúc giống hệt nhau?Sao chép các hàng giữa các cơ sở dữ liệu trong máy chủ SQL
Trả lời
Nếu log IO hệ thống phụ của bạn cho phép nó, sau đó:
INSERT INTO target(field1, field2, field3)
SELECT field1, field2, field3 FROM source;
Nhưng có chuyển giao toàn bộ xảy ra trong một tuyên bố duy nhất có nghĩa là một giao dịch duy nhất, có nghĩa là kích thước dữ liệu x2.5 log phải được tạo ra và giữ trong toàn bộ câu lệnh. I E. nếu bạn chuyển 50Gb, nhật ký db mục tiêu của bạn sẽ tăng lên 250Gb (ngay cả khi chế độ khôi phục được đặt thành đơn giản!).
Nếu bạn quan tâm đến nhật ký, thì bạn phải chuyển theo lô. Bạn vẫn có thể thực hiện thủ thuật CH INSN CHỌN ... SELECT, nhưng lệnh SELECT của bạn phải sử dụng một số dãy khóa và số hàng có thể chấp nhận được.
Cuối cùng, bạn luôn có thể thực hiện bcp out
, sau đó là bcp in
, nó sẽ hoạt động khá nhanh và có lẽ là cách nhanh nhất để chuyển tải đáng tin cậy.
Nếu databasesare trên cùng một máy chủ, sau đó nó tầm thường - bạn muốn làm điều đó như thể bạn đang sao chép giữa các bảng trong cơ sở dữ liệu tương tự, ví dụ:
INSERT INTO targetdatabase..targettable (col1, col2, col3, col4)
SELECT col1, col2, col3, col4 FROM sourcedatabase..sourcetable
Nếu cơ sở dữ liệu là trên các máy chủ khác nhau, bạn sẽ cần phải xem xét sử dụng một trong OPENQUERY, OPENROWSET hoặc các máy chủ được liên kết để thực hiện truy vấn, nhưng về cơ bản ngay cả với tất cả những điều này, bạn vẫn sẽ viết một biến thể trên lệnh ở trên.
Ngoài ra, đó là trường hợp BCP ra và BCP trong hoặc sử dụng thuật sĩ chuyển dữ liệu của SQL Server Management Studio.
tôi sẽ xem xét một số lượng lớn chèn:
Một cách đơn giản là mở SSMS và nhấp chuột phải vào cơ sở dữ liệu và đi đến Tasks> Nhập dữ liệu và làm theo hướng dẫn để thiết lập nguồn và đích.
Bằng cách này, nếu dữ liệu tồn tại trên các hệ thống khác nhau và ngay cả khi bạn muốn thay đổi cấu trúc bạn có thể làm.
Đồng thời thêm hoặc xóa dữ liệu cùng một lúc khỏi đích.
bạn có thể chỉ đơn giản là sử dụng cơ sở dữ liệu Copy Wizard
http://www.packtpub.com/article/copying-database-sql-2008-copy-database-wizard
chèn vào CRS_New.dbo.SalesUpdateRBCustomerExternalRelationShipData_V1 (RBCustomerExternalEdgeKeyFather, RBCustomerExternalEdgeKeySon, EdgeLevelIndicator, Status, Edition, StatusValidFrom, ActiveIndicator, AddAttributeList_id) chọn RBCustomerExternalEdgeKeyFather, RBCustomerExternalEdgeKeySon, EdgeLevelIndicator, Trạng thái, Phiên bản, Trạng tháiValidFrom, ActiveIndicator, AddAttributeList_id từ CRS.dbo.SalesUpdateRBCustomerExternalRelationShipData_V11
chèn vào DBName.dbo.TableName (col1, col2 ...) chọn (col1, col2 ...) từ DBName.dbo.TableName –
Insert into targetdatabase.dbo.tablename
select * from sourcedatabase.dbo.tablename
LƯU Ý: .dbo là quan trọng
Nếu các cột khác nhau trong bảng nguồn và đích thì hãy đề cập rõ ràng các cột cho cả hai bảng.Hãy ghi nhớ rằng loại dữ liệu phải giống nhau
downvoted do thiếu danh sách cột –
:) Tôi đã đề cập đến nó giao phối ... nếu các cột của bạn khác nhau về nguồn và đích hơn là bạn cần phải đề cập đến nó, nếu không thì điều này sẽ hoạt động –
Ngay cả khi chúng giống nhau, bạn cần đưa chúng vào. Nếu không, sau đó bạn thêm một cột vào một trong hai nguồn hoặc đích nó sẽ bị hỏng .... thậm chí còn tệ hơn. Lập trình phòng thủ –
- 1. SQL Server 2005, cách sao chép Sơ đồ cơ sở dữ liệu sang máy chủ khác
- 2. Sao chép các giá trị BLOB giữa các cơ sở dữ liệu với SQL thuần trong SQL Server
- 3. Sao chép các bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong SQL Server
- 4. Sao chép máy chủ SQL không sao chép khóa ngoài
- 5. Các chiến lược sao chép dữ liệu từ cơ sở dữ liệu MySQL trực tiếp đến máy chủ dàn dựng
- 6. Sao chép ngang hàng của cơ sở dữ liệu sqlite
- 7. Cách sao chép các khung nhìn từ một cơ sở dữ liệu sang cơ sở dữ liệu khác
- 8. 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
- 9. Sao chép cơ sở dữ liệu SQL Server Express sang một máy tính khác
- 10. Sao chép bảng từ một cơ sở dữ liệu sang một cơ sở dữ liệu khác
- 11. Máy chủ SQL: Nhập cơ sở dữ liệu từ .mdf?
- 12. Máy chủ SQL - sao chép dữ liệu từ bảng dàn
- 13. Khóa cơ sở dữ liệu máy chủ SQL với PHP
- 14. dữ liệu Sao chép giữa hai trường hợp máy chủ
- 15. Sao chép các thực thể giữa nhiều cơ sở dữ liệu với NHibernate
- 16. Làm cách nào để sao chép bản ghi dữ liệu giữa hai bản sao của cơ sở dữ liệu SQLServer
- 17. Cách sao chép cơ sở dữ liệu máy chủ sql từ máy chủ này sang máy chủ khác mà không có bất kỳ bản sao lưu nào
- 18. Sao chép cơ sở dữ liệu trong postgres
- 19. Công cụ để tìm các tắc nghẽn cơ sở dữ liệu trong máy chủ sql
- 20. Làm thế nào để chuyển dữ liệu được mã hóa sql giữa các cơ sở dữ liệu SQL Server 2005?
- 21. Sử dụng Entity Framework để sao chép các đối tượng cơ sở dữ liệu giữa
- 22. Cách tốt nhất để sao chép toàn bộ cơ sở dữ liệu trong MS SQL Server?
- 23. Sao chép cơ sở dữ liệu PostgreSQL sang một máy chủ khác
- 24. sao chép mysql - máy chủ nô lệ trên một cơ sở dữ liệu
- 25. cách chuyển các thủ tục được lưu trữ giữa các cơ sở dữ liệu SQL Server 2005
- 26. Các Id cơ sở dữ liệu máy chủ SQL luôn tích cực?
- 27. Sao chép bảng vào một cơ sở dữ liệu khác nhau trên một Máy chủ SQL khác nhau
- 28. Sao chép dữ liệu từ một bảng cơ sở dữ liệu SQL Server sang một bảng khác
- 29. Sao chép toàn bộ nội dung cơ sở dữ liệu (lược đồ và dữ liệu)
- 30. cửa hàng arabic trong cơ sở dữ liệu SQL
Có bất kỳ sự khác biệt nào với 'INSERT INTO ... SELECT ...' vs 'SELECT ... INTO ...'? Hoặc là sau này chỉ cú pháp đường? Bên cạnh thực tế là bảng không thể tồn tại trong 'SELECT ... INTO ...'. –
'SELECT ... INTO ...' là tốt hơn, nếu có thể. Nó sẽ ghi ít hơn đáng kể nếu cơ sở dữ liệu ở chế độ đăng nhập hàng loạt. IS cũng nhanh hơn bởi vì theo định nghĩa mục tiêu là một heap w/o bất kỳ chỉ số NC, vì vậy nó sẽ là chèn nhanh nhất có thể. Nhưng chỉ có thể được phát hành nếu bảng * không * tồn tại, và OP đã đề cập đến các bảng đã tồn tại. –