Tôi đã tìm thấy cách nhanh hơn và dễ dàng hơn để thực hiện việc này.
Đầu tiên copy bảng của bạn (hoặc truy vấn) vào một tập tin phân định tab như vậy:
COPY (SELECT siteid, searchdist, listtype, list, sitename, county, street,
city, state, zip, georesult, elevation, lat, lng, wkt, unlocated_bool,
id, status, standard_status, date_opened_or_reported, date_closed,
notes, list_type_description FROM mlocal) TO 'c:\SQLAzureImportFiles\data_script_mlocal.tsv' NULL E''
Tiếp theo bạn cần tạo bảng trong SQL, điều này sẽ không xử lý bất kỳ sơ đồ cho bạn. Lược đồ phải khớp với tệp tsv đã xuất của bạn trong thứ tự trường và kiểu dữ liệu.
Cuối cùng bạn chạy tiện ích BCP SQL để mang lại trong file tsv như vậy:
bcp MyDb.dbo.mlocal in "\\NEWDBSERVER\SQLAzureImportFiles\data_script_mlocal.tsv" -S tcp:YourDBServer.database.windows.net -U YourUserName -P YourPassword -c
Một vài điều đáng chú ý mà tôi gặp phải. Postgres và SQL Server xử lý các trường boolean khác nhau. Lược đồ SQL Server của bạn cần phải có các trường boolean của bạn được đặt thành varchar (1) và dữ liệu kết quả sẽ là 'f', 't' hoặc null. Sau đó, bạn sẽ phải chuyển đổi trường này thành bit. làm một cái gì đó như:
ALTER TABLE mlocal ADD unlocated bit;
UPDATE mlocal SET unlocated=1 WHERE unlocated_bool='t';
UPDATE mlocal SET unlocated=0 WHERE unlocated_bool='f';
ALTER TABLE mlocal DROP COLUMN unlocated_bool;
Một điều nữa là các trường địa lý/hình học rất khác nhau giữa hai nền tảng. Xuất các trường hình học dưới dạng WKT sử dụng ST_AsText(geo)
và chuyển đổi một cách thích hợp trên đầu máy chủ SQL.
Có thể có nhiều sự không tương thích cần chỉnh sửa như thế này.
EDIT. Vì vậy, trong khi kỹ thuật này không hoạt động về mặt kỹ thuật, tôi đang cố gắng chuyển vài triệu bản ghi từ 100 bảng trở lên sang SQL Azure và bcp sang SQL Azure khá dễ dàng. Tôi liên tục bị gián đoạn Không thể mở tệp dữ liệu máy chủ BCP lỗi, máy chủ không liên tục định giờ và vì lý do nào đó, một số hồ sơ không được chuyển mà không có dấu hiệu lỗi hoặc sự cố. Vì vậy, kỹ thuật này không ổn định để chuyển lượng lớn dữ liệu sang Azure SQL.
Tôi phải hỏi, nếu bạn không có tiền, tại sao bạn chuyển sang SQL Server? Trong khi Express có thể miễn phí, cơ sở hạ tầng cần thiết để triển khai nó sẽ không ... –
Những nhược điểm này là ngớ ngẩn; đó là một câu hỏi hoàn toàn hợp pháp và MS SQL -> MySQL câu hỏi di cư đã được upvoted trên đây. Tôi đang chuyển sang SQL Server bởi vì tôi đã có một cơ sở dữ liệu đó là MS SQL nhưng rất nhiều dữ liệu có giá trị mà tôi có thể sử dụng chỉ tồn tại trong một cơ sở dữ liệu PostgreSQL. Lưu trữ cho hầu hết các máy chủ có cùng mức giá và tôi thích ASP.NET MVC 3 vì không có tiện ích bổ sung của bên thứ ba. LINQ to SQL là flakey với PostgreSQL. – Hut8
Bạn gặp vấn đề gì khi sử dụng phương thức SQL pg_dump và nhập DDL/DML trên SQL Server? Bạn có ý gì với "Tôi đang làm bảng này theo bảng"? –