Có công cụ dòng lệnh nào để chuyển đổi cơ sở dữ liệu MySQL sang PostgreSQL không? Tôi cũng muốn biết liệu có cách nào để chuyển đổi cơ sở dữ liệu bằng mysqldump
lệnh thông thường không .
Có công cụ dòng lệnh nào để chuyển đổi cơ sở dữ liệu MySQL sang PostgreSQL không? Tôi cũng muốn biết liệu có cách nào để chuyển đổi cơ sở dữ liệu bằng mysqldump
lệnh thông thường không .
Câu trả lời:
bạn đã thử chưa
mysqldump --compatible=postgresql dbname > export.sql
sau đó làm điều này để thoát dấu ngoặc kép
sed "s/\\\'/\'\'/g" export.sql > export1.sql
có thể cần thêm một số xoa bóp vì vậy hãy nhìn vào tài liệu mysqldump chặt chẽ hơn.
mysqldump
. syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Dưới đây là một vài công cụ nguồn mở, có thể rất hữu ích:
FromMySqlToPostgreSql
là một công cụ tiếp cận tính năng và rất dễ sử dụng.
Nó ánh xạ các kiểu dữ liệu, di chuyển các ràng buộc, chỉ mục, PK và FK chính xác như trong db db của bạn.
Dưới mui xe, nó sử dụng PostgreSQL COPY, vì vậy việc truyền dữ liệu rất nhanh.
FromMySqlToPostgreSql được viết bằng PHP (> = 5.4).
pgloader là một công cụ tải dữ liệu cho PostgreSQL, sử dụng lệnh COPY. Ưu điểm chính của nó so với việc chỉ sử dụng
COPY
hoặc là \copy
và sử dụng Trình bao bọc dữ liệu nước ngoài, là hành vi giao dịch của nó, trong đó pgloader sẽ giữ một tệp dữ liệu bị từ chối riêng biệt, nhưng tiếp tục cố gắng sao chép dữ liệu tốt trong cơ sở dữ liệu của bạn. Hành vi PostgreSQL mặc định là giao dịch, có nghĩa là bất kỳ dòng lỗi nào trong dữ liệu đầu vào (tệp hoặc cơ sở dữ liệu từ xa) sẽ dừng toàn bộ tải hàng loạt cho bảng. pgloader cũng thực hiện định dạng lại dữ liệu, một ví dụ điển hình cho việc chuyển đổi các dấu thời gian của MySQL 0000-00-00 và 0000-00-00 00:00:00 sang PostgreQueryNULL
giá trị (vì lịch của chúng tôi không bao giờ có năm không).
Thực sự có một công cụ di chuyển miễn phí khá dễ sử dụng, được phát triển bởi chính EnterpriseDB. Nó có thể được cài đặt thông qua StackBuilder: Migration Toolkit
Gần đây tôi đã sử dụng một công cụ không miễn phí từ DBConvert để chuyển đổi cơ sở dữ liệu truy cập sang postgres và thấy nó cũng đáng đồng tiền so với thời gian tôi lãng phí khi cố gắng làm nó miễn phí. Việc bán một công cụ tương tự cho MySQL <-> postgres mà tôi chưa sử dụng, nhưng có thể đáng để xem xét trừ khi bạn chỉ quan tâm đến các công cụ dòng lệnh.
Trong trường hợp bạn đang tự hỏi tôi không liên kết với họ theo bất kỳ cách nào :-)
Bạn có thể sử dụng Thuật sĩ di chuyển EnterpriseDB chẳng hạn.
Nó có thể biểu thị di chuyển OracleDB. Nhưng đối với Mysql, nó có một số hạn chế, ví dụ, nó không hỗ trợ các khung nhìn, kích hoạt, các thủ tục được lưu trữ.
Để biết thêm, xem Bộ công cụ di chuyển EDB . Không chắc chắn, nhưng có thể di chuyển mysql-> oracle-> postgresql lưu các thủ tục được lưu trữ của bạn (trong trường hợp chúng tồn tại).
Grep this: Công cụ di chuyển cơ sở dữ liệu và SQL
Đây chỉ là để thêm vào các câu trả lời hiện có, giúp tôi tìm ra giải pháp này. Tôi đã sử dụng FromMySqlToPostgreSql . Tất cả những gì bạn cần làm là tải xuống và trích xuất FromMySqlToPostgreSql , tạo một bản sao của tệp cấu hình mẫu, đặt các giá trị kết nối db trong đó và chạy tệp chỉ mục bằng lệnh sau:
php index.php config.xml
Đơn giản mà hiệu quả!
Có một công cụ mã nguồn mở cung cấp các chức năng để chuyển đổi một db MySQL thành các chỉ mục, fks và dữ liệu của Postgresql.
https://github.com/ggarri/mysql2psql
Công cụ này cũng cho phép xác định các thay đổi lược đồ để bạn có thể thực hiện một số nâng cấp cho lược đồ hiện tại của mình trong thời gian chạy.