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

Chuyển từ MSSQL sang PostgreSQL - Điều bạn nên biết

Như bạn có thể biết, Microsoft SQL Server là RDBMS rất phổ biến với cấp phép hạn chế cao và chi phí sở hữu cao nếu cơ sở dữ liệu có kích thước đáng kể hoặc được sử dụng bởi một số lượng lớn khách hàng. Nó cung cấp một giao diện rất thân thiện và dễ học. Điều này đã dẫn đến một cơ sở người dùng được cài đặt lớn.

PostgreSQL là cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới. Cộng đồng PostgreSQL rất mạnh và liên tục cải tiến các tính năng hiện có cũng như triển khai các tính năng mới. Theo xếp hạng phổ biến của db-engine, PostgreSQL là DBMS của năm 2017.

Tại sao phải chuyển từ MS SQL Server sang PostgreSQL?

  1. MS SQL Server là cơ sở dữ liệu độc quyền của Microsoft, trong khi PostgreSQL được phát triển và duy trì bởi cộng đồng các nhà phát triển mã nguồn mở toàn cầu. Nếu chi phí là một vấn đề, thì chắc chắn bạn nên sử dụng PostgreSQL. Bạn có thể kiểm tra giá tại đây.
  2. PostgreSQL là một công cụ cơ sở dữ liệu đa nền tảng và nó có sẵn cho Windows, Mac, Solaris, FreeBSD và Linux trong khi SQL Server chỉ chạy trên hệ điều hành Windows. Như bạn có thể biết, PostgreSQL là mã nguồn mở và hoàn toàn miễn phí trong khi chi phí Máy chủ MSSQL phụ thuộc vào số lượng người dùng và kích thước cơ sở dữ liệu.
  3. Cấp phép nguồn mở linh hoạt và tính khả dụng dễ dàng từ các nhà cung cấp đám mây công cộng như AWS, Google cloud, v.v.
  4. Hưởng lợi từ các tiện ích bổ sung nguồn mở để cải thiện hiệu suất.

Những điều bạn nên biết

Mặc dù cả cơ sở dữ liệu Microsoft SQL Server và cơ sở dữ liệu PostgreSQL đều tuân thủ ANSI-SQL nhưng vẫn có sự khác biệt giữa cú pháp SQL, kiểu dữ liệu, độ phân biệt chữ hoa chữ thường và điều đó làm cho việc truyền dữ liệu không quá đơn giản.

Trước khi di chuyển, hãy hiểu sự khác biệt giữa MSSQL và PostgreSQL. Có rất nhiều tính năng trong cả hai cơ sở dữ liệu, vì vậy bạn nên biết hoạt động của các tính năng / chức năng đó trong MSSQL và PostgreSQL. Vui lòng kiểm tra một số khác biệt quan trọng mà bạn nên biết trước khi di chuyển.

Ánh xạ kiểu dữ liệu

Một số kiểu dữ liệu của MSSQL không khớp trực tiếp với kiểu dữ liệu PostgreSQL, vì vậy bạn cần thay đổi nó thành kiểu dữ liệu PostgreSQL tương ứng.

Vui lòng kiểm tra bảng dưới đây.

Microsoft SQL Server PostgreSQL
BIGINT số nguyên 64 bit BIGINT
BINARY (n) Chuỗi byte có độ dài cố định BYTEA
BIT 1, 0 hoặc NULL BOOLEAN
CHAR (n) Chuỗi ký tự có độ dài cố định, 1 <=n <=8000 CHAR (n)
VARCHAR (n) Chuỗi ký tự có độ dài thay đổi, 1 <=n <=8000 VARCHAR (n)
VARCHAR (tối đa) Chuỗi ký tự có độ dài thay đổi, <=2GB VĂN BẢN
VARBINARY (n) Chuỗi byte có độ dài thay đổi, 1 <=n <=8000 BYTEA
VARBINARY (tối đa) Chuỗi byte có độ dài thay đổi, <=2GB BYTEA
NVARCHAR (n) Chuỗi Unicode UCS-2 có độ dài thay đổi VARCHAR (n)
NVARCHAR (tối đa) Dữ liệu Unicode UCS-2 có độ dài thay đổi, <=2GB VĂN BẢN
VĂN BẢN Dữ liệu ký tự có độ dài thay đổi, <=2GB VĂN BẢN
NTEXT Dữ liệu Unicode UCS-2 có độ dài thay đổi, <=2GB VĂN BẢN
CHÍNH XÁC ĐÔI Số dấu phẩy động chính xác kép CHÍNH XÁC ĐÔI
FLOAT (p) Số dấu phẩy động CHÍNH XÁC ĐÔI
INTEGER số nguyên 32 bit INTEGER
SỐ (p, s) Số điểm cố định SỐ (p, s)
NGÀY Ngày bao gồm năm, tháng và ngày NGÀY
DATETIME Ngày và Giờ với phân số TIMESTAMP (3)
DATETIME2 (p) Ngày và Giờ với phân số TIMESTAMP (n)
DATETIMEOFFSET (p) Ngày và giờ với phân số và múi giờ TIMESTAMP (p) VỚI KHU VỰC THỜI GIAN
SMALLDATETIME Ngày và giờ TIMESTAMP (0)
TINYINT số nguyên không dấu 8 bit, 0 đến 255 SMALLINT
UNIQUEIDENTIFIER Dữ liệu GUID (UUID) 16 byte CHAR (16)
ROWVERSION Dữ liệu nhị phân được cập nhật tự động BYTEA
TIỀN NHỎ Số tiền 32 bit TIỀN
HÌNH ẢNH Dữ liệu nhị phân có độ dài thay đổi, <=2GB BYTEA
Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thức

Sự không tương thích trong MS SQL Server và PostgreSQL

Có rất nhiều điểm không tương thích hiện diện trong MS SQL Server và PostgreSQL, Bạn có thể xem một số điểm không tương thích tại đây. Bạn có thể tự động hóa chúng bằng cách tạo các tiện ích mở rộng để có thể sử dụng chức năng MS SQL Server như trong PostgreSQL và bạn có thể tiết kiệm thời gian của mình.

DATEPART

DATEPART phải được thay thế bằng DATE_PART trong PostgreSQL.

Ví dụ

MS SQL:

DATEPART( datepart , date )

PostgreSQL:

date_part( text , timestamp )
date_part( text , interval )

ISNULL

Hàm ISNULL phải được thay thế bằng hàm COALESCE trong PostgreSQL.

Ví dụ

MS SQL Server:

ISNULL(exp, replacement)

PostgreSQL:

COALESCE(exp, replacement)

KHÔNG GIAN

Hàm SPACE trong MS SQL Server phải được thay thế bằng hàm REPEAT trong PostgreSQL.

Ví dụ

MS SQL Server:

SPACE($n)

Trong đó $ n là số khoảng trắng được trả về.

PostgreSQL:

REPEAT(‘ ’, $n)

DATEADD

PostgreSQL không cung cấp hàm DATEADD tương tự như MS SQL Server, bạn có thể sử dụng số học datetime với các ký tự khoảng thời gian để nhận được kết quả tương tự.

Ví dụ

MS SQL Server:

--Add 2 day to the current date
SELECT DATEADD(day, 2, GETDATE());

PostgreSQL:

--Add 2 day to the current date
SELECT CURRENT_DATE + INTERVAL ‘2 day’;

Nối chuỗi

MS SQL Server sử dụng ‘+’ cho Kết nối chuỗi trong khi PostgreSQL sử dụng ‘||’ cho tương tự.

Ví dụ

MS SQL Server:

SELECT FirstName + LastName FROM employee;

PostgreSQL:

SELECT FirstName || LastName FROM employee;

CHARINDEX

Có chức năng CHARINDEX trong PostgreSQL. Bạn có thể thay thế hàm này bằng hàm POSITION tương đương của PostgreSQL.

Ví dụ

MS SQL Server:

SELECT CHARINDEX('our', 'resource');

PostgreSQL:

SELECT POSITION('our' in 'resource');

NHẬN

Hàm GETDATE trả về ngày và giờ hiện tại. Không có hàm GETDATE trong PostgreSQL, nhưng có hàm NOW () cho cùng mục đích. Nếu có nhiều lần xuất hiện của hàm GETDATE thì bạn có thể tự động hóa chúng bằng cách sử dụng tiện ích mở rộng. Vui lòng kiểm tra cách tạo mô-đun bằng tiện ích mở rộng.

Ví dụ

MS SQL Server:

SELECT GETDATE();

PostgreSQL:

SELECT NOW();

Công cụ

Bạn có thể sử dụng một số công cụ để di chuyển cơ sở dữ liệu MS SQL Server sang PostgreSQL. Vui lòng kiểm tra công cụ trước khi sử dụng.

  1. Pgloader

    Bạn có thể sử dụng công cụ pgloader để di chuyển cơ sở dữ liệu MS SQL sang PostgreSQL. Các lệnh trong pgloader tải dữ liệu từ cơ sở dữ liệu MS SQL. Pgloader hỗ trợ tự động khám phá lược đồ, bao gồm xây dựng các chỉ mục, các ràng buộc về khóa chính và khóa ngoại.

    Pgloader cung cấp các quy tắc truyền khác nhau có thể chuyển đổi kiểu dữ liệu MS SQL thành kiểu dữ liệu PostgreSQL.

  2. Sqlserver2pgsql

    Đây là một công cụ di chuyển mã nguồn mở khác để chuyển đổi cơ sở dữ liệu Microsoft SQL Server thành cơ sở dữ liệu PostgreSQL, một cách tự động nhất có thể. Sqlserver2pgsql được viết bằng Perl.

    Công cụ Sqlserver2pgsql thực hiện hai việc:

    1. Nó chuyển đổi một lược đồ SQL Server thành một lược đồ PostgreSQL
    2. Nó có thể tạo ra một bộ tích hợp dữ liệu Pentaho (Ấm đun nước) để di chuyển tất cả dữ liệu từ SQL Server sang PostgreSQL. Đây là một phần không bắt buộc.

Thử nghiệm

Việc kiểm tra ứng dụng và cơ sở dữ liệu đã di chuyển là rất quan trọng vì một số chức năng giống nhau trong cả hai cơ sở dữ liệu, tuy nhiên, hoạt động là khác nhau.

Một số tình huống phổ biến cần được kiểm tra:

  • Kiểm tra xem tất cả các đối tượng cơ sở dữ liệu có được chuyển đổi chính xác hay không.
  • Kiểm tra hoạt động của tất cả các chức năng trong DML có hoạt động chính xác hay không.
  • Tải dữ liệu mẫu vào cả hai cơ sở dữ liệu và kiểm tra kết quả của tất cả các truy vấn DML trong cả hai cơ sở dữ liệu. Kết quả của tất cả SQL phải giống nhau.
  • Kiểm tra hiệu suất của DML và cải thiện nó nếu cần.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trừ số ngày cho một ngày trong PostgreSQL

  2. Sắp xếp các phần tử mảng

  3. Cách INTERSECT hoạt động trong PostgreSQL

  4. Nhóm kết quả truy vấn theo tháng và năm trong postgresql

  5. Truy vấn cập nhật đơn giản chậm trên cơ sở dữ liệu PostgreSQL với 3 triệu hàng