PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chuyển đổi tệp kết xuất SQLITE SQL sang POSTGRESQL

Bạn có thể cung cấp thẳng tệp kết xuất đó vào psql :

/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql

Nếu bạn muốn id cột thành "tự động tăng" sau đó thay đổi kiểu của nó từ "int" thành "nối tiếp" trong dòng tạo bảng. Sau đó, PostgreSQL sẽ đính kèm một chuỗi vào cột đó để các INSERT có id NULL sẽ được tự động gán giá trị có sẵn tiếp theo. PostgreSQL cũng sẽ không nhận ra AUTOINCREMENT các lệnh, vì vậy chúng cần được loại bỏ.

Bạn cũng sẽ muốn kiểm tra datetime các cột trong lược đồ SQLite và thay đổi chúng thành timestamp cho PostgreSQL. (Cảm ơn Clay đã chỉ ra điều này.)

Nếu bạn có boolean trong SQLite của mình thì bạn có thể chuyển đổi 10 thành 1::boolean0::boolean (tương ứng) hoặc bạn có thể thay đổi cột boolean thành một số nguyên trong phần lược đồ của kết xuất và sau đó sửa chúng bằng tay bên trong PostgreSQL sau khi nhập.

Nếu bạn có BLOB trong SQLite của mình thì bạn sẽ muốn điều chỉnh lược đồ để sử dụng bytea . Có thể bạn sẽ cần kết hợp một số decode cuộc gọi cũng vậy. Viết nhanh một máy photocopy không bẩn bằng ngôn ngữ yêu thích của bạn có thể dễ dàng hơn so với viết SQL nếu bạn phải xử lý nhiều BLOB.

Như thường lệ, nếu bạn có khóa ngoại thì có thể bạn sẽ muốn xem xét set constraints all deferred để tránh các vấn đề về chèn lệnh, hãy đặt lệnh bên trong cặp BEGIN / COMMIT.

Cảm ơn Nicolas Riley về các ghi chú boolean, blob và các ràng buộc.

Nếu bạn có ` trên mã của bạn, do một số ứng dụng khách SQLite3 tạo ra, bạn cần xóa chúng.

PostGRESQL cũng không nhận dạng được unsigned , vì vậy bạn có thể muốn loại bỏ hoặc thêm một ràng buộc tùy chỉnh, chẳng hạn như sau:

CREATE TABLE tablename (
    ...
    unsigned_column_name integer CHECK (unsigned_column_name > 0)
);

Trong khi SQLite mặc định giá trị null thành '' , PostgreSQL yêu cầu chúng phải được đặt thành NULL .

Cú pháp trong tệp kết xuất SQLite dường như hầu hết tương thích với PostgreSQL, vì vậy bạn có thể vá một số thứ và đưa nó vào psql . Việc nhập một đống dữ liệu lớn thông qua SQL INSERT có thể mất một chút thời gian nhưng nó sẽ hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chúng ta đã sẵn sàng cho PGDay Bắc Âu chưa?

  2. Đếm ký tự trong chuỗi thông qua SQL

  3. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  4. Thông báo các thay đổi của postgres đối với ứng dụng java

  5. Tổng quan về sao chép mức khối lượng cho PostgreSQL bằng DRBD