Trước tiên tôi 'd chỉ cần thử một cách đơn giản:
sqlite3 sqllitedb .dump | psql postgresdb
Tại điểm đó, chỉ cần kiểm tra nó ra. Viết một số kịch bản thử nghiệm trong Django để xuất ra một tập hợp các bản ghi mẫu cho mỗi ứng dụng, và sau đó thực hiện một khác biệt để đảm bảo chúng giống hệt nhau. Nếu có, thì chuyển đổi của bạn có thể là tốt.
Nếu điều đó không làm việc ...
tôi khuyên bạn nên chống lại sử dụng Django để đổ và tải các dữ liệu, vì tôi đoán nó không được tối ưu hóa để làm như vậy. Thay vào đó, tôi sẽ tạo một phiên bản thứ hai của ứng dụng của bạn với các cài đặt cơ sở dữ liệu PostgreSQL chính xác, chạy syncdb để tạo tất cả các bảng, sau đó sao chép dữ liệu từ mysqllite sang PostgreSQL bằng một số công cụ khác.
Vấn đề là, hầu hết các vấn đề khi chuyển đổi qua dữ liệu nằm trong các định nghĩa bảng, v.v ... Có vẻ như đó là định dạng riêng nhất. Nếu bạn có thể tạo ra một kịch bản lệnh SQL là một kết xuất của các nội dung bảng, đó là các lệnh SQL INSERT INTO
khá chuẩn.
Thành thật mà nói, tôi không thể thấy lý do tại sao có vấn đề chính ở nước ngoài. Giả sử rằng sqlite đang tạo ra các khóa ngoài chính xác (và tại sao nó không?) Thì không có cách nào không sao chép chính xác. Thực sự, các khóa ngoại không phải là các dạng dữ liệu đặc biệt. Không có khả năng trường UserProfile.user_id
sẽ chứa giá trị không chính xác hơn trường UserProfile.photo
. Nếu mối quan tâm chính của nước ngoài là các trường không được xác định chính xác là các trường khóa ngoài (nghĩa là không có ràng buộc), thì tùy chọn tạo cơ sở dữ liệu đầu tiên bằng cách sử dụng syncdb
sẽ giải quyết vấn đề đó.
Theo cắt bớt: như tôi đã hiểu, PostgreSQL sẽ phát ra lỗi nghiêm trọng nếu dữ liệu sắp bị cắt bớt. Tôi không biết nếu đó là trường hợp với sqlite hoặc nếu nó chỉ truncates âm thầm. Dù bằng cách nào, một lần nữa giả sử sqlite không phải là bằng cách nào đó trộn dữ liệu khi xuất, các trường phải chứa dữ liệu có độ dài thích hợp cho trường mà nó đang đi vào.Điều duy nhất tôi có thể nghĩ về điều đó có thể ảnh hưởng đến điều này là mã hóa ký tự, vì vậy hãy chắc chắn rằng các trường PostgreSQL có cùng mã hóa như các bảng sqlite làm, ít nhất là trong quá trình nhập.
Nguồn
2010-08-13 15:00:39
python manage.py dumpdata -> ra khỏi bộ nhớ trên máy tính của tôi ... Nếu tôi cố gắng ứng dụng bằng cách ứng dụng, nó tốt hơn nhưng việc nhập khẩu không hoạt động . –