PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Migrasi dari MSSQL ke PostgreSQL - Yang Harus Anda Ketahui

Seperti yang Anda ketahui, Microsoft SQL Server adalah RDBMS yang sangat populer dengan lisensi yang sangat ketat dan biaya kepemilikan yang tinggi jika database berukuran signifikan, atau digunakan oleh sejumlah besar klien. Ini menyediakan antarmuka yang sangat ramah pengguna dan mudah dipelajari. Ini menghasilkan basis pengguna yang besar.

PostgreSQL adalah database open source tercanggih di dunia. Komunitas PostgreSQL sangat kuat dan terus meningkatkan fitur yang ada dan mengimplementasikan fitur baru. Sesuai peringkat popularitas mesin db, PostgreSQL adalah DBMS tahun 2017.

Mengapa Bermigrasi dari MS SQL Server ke PostgreSQL?

  1. MS SQL Server adalah database berpemilik dari Microsoft, sedangkan PostgreSQL dikembangkan dan dikelola oleh komunitas global pengembang open source. Jika biaya menjadi masalah, maka Anda harus menggunakan PostgreSQL. Anda dapat memeriksa harganya di sini.
  2. PostgreSQL adalah mesin database lintas platform dan tersedia untuk Windows, Mac, Solaris, FreeBSD dan Linux sementara SQL Server hanya berjalan pada sistem operasi Windows. Seperti yang Anda ketahui, PostgreSQL adalah open source dan sepenuhnya gratis, sedangkan biaya MSSQL Server bergantung pada jumlah pengguna dan ukuran database.
  3. Lisensi open source yang fleksibel dan ketersediaan yang mudah dari penyedia cloud publik seperti AWS, Google cloud, dll.
  4. Manfaatkan add-on open source untuk meningkatkan kinerja.

Yang Harus Anda Ketahui

Meskipun database Microsoft SQL Server dan database PostgreSQL sesuai dengan ANSI-SQL tetapi masih ada perbedaan antara sintaks SQL, tipe data, sensitivitas huruf besar-kecil, dan itu membuat transfer data tidak begitu sepele.

Sebelum migrasi, pahami perbedaan antara MSSQL dan PostgreSQL. Ada banyak fitur di kedua database sehingga Anda harus mengetahui perilaku fitur/fungsi tersebut di MSSQL dan PostgreSQL. Harap periksa beberapa perbedaan penting yang harus Anda ketahui sebelum migrasi.

Pemetaan Tipe Data

Beberapa tipe data MSSQL tidak cocok secara langsung dengan tipe data PostgreSQL, jadi Anda perlu mengubahnya ke tipe data PostgreSQL yang sesuai.

Silakan periksa tabel di bawah ini.

Microsoft SQL Server PostgreSQL
BESAR Integer 64-bit BESAR
BINARY(n) String byte dengan panjang tetap BYTEA
BIT 1, 0 atau NULL BOOLEAN
CHAR(n) String karakter dengan panjang tetap, 1 <=n <=8000 CHAR(n)
VARCHAR(n) Panjang variabel string karakter, 1 <=n <=8000 VARCHAR(n)
VARCHAR(maks) String karakter dengan panjang variabel, <=2GB TEKS
VARBINARY(n) Panjang variabel byte string, 1 <=n <=8000 BYTEA
VARBINARY(maks) Panjang variabel byte string , <=2GB BYTEA
NVARCHAR(n) Panjang variabel Unicode UCS-2 string VARCHAR(n)
NVARCHAR(maks) Panjang variabel data Unicode UCS-2, <=2GB TEKS
TEKS Data karakter panjang variabel, <=2GB TEKS
NTEXT Panjang variabel data Unicode UCS-2, <=2GB TEKS
PRESISI GANDA Angka floating point presisi ganda PRESISI GANDA
FLOAT(p) Angka titik mengambang PRESISI GANDA
BATABATA Integer 32 bit BATA BATA
NUMERIK(p,s) Nomor poin tetap NUMERIK(p,s)
TANGGAL Tanggal termasuk tahun, bulan dan hari TANGGAL
DATETIME Tanggal dan Waktu dengan pecahan TIMESTAMP(3)
DATETIME2(p) Tanggal dan Waktu dengan pecahan TIMESTAMP(n)
DATETIMEOFFSET(p) Tanggal dan Waktu dengan pecahan dan zona waktu TIMESTAMP(p) DENGAN ZONA WAKTU
SALLDATETIME Tanggal dan Waktu TIMESTAMP(0)
TINYINT 8 bit unsigned integer, 0 hingga 255 KECIL
UNIQUEIDENTIFIER Data GUID(UUID) 16 byte CHAR(16)
VERSI ROW Data biner diperbarui secara otomatis BYTEA
UANG KECIL Jumlah mata uang 32 bit UANG
GAMBAR Data biner dengan panjang variabel, <=2GB BYTEA
Unduh Whitepaper Hari Ini Pengelolaan &Otomatisasi PostgreSQL dengan ClusterControlPelajari tentang apa yang perlu Anda ketahui untuk menerapkan, memantau, mengelola, dan menskalakan PostgreSQLUnduh Whitepaper

Inkompatibilitas dalam MS SQL Server dan PostgreSQL

Ada banyak ketidaksesuaian yang ada di MS SQL Server dan PostgreSQL, Anda dapat melihat beberapa di antaranya di sini. Anda dapat mengotomatiskannya dengan membuat ekstensi sehingga Anda dapat menggunakan fungsi MS SQL Server seperti yang ada di PostgreSQL dan Anda dapat menghemat waktu Anda.

DATEPART

DATEPART harus diganti dengan DATE_PART di PostgreSQL.

Contoh

MS SQL:

DATEPART( datepart , date )

PostgreSQL:

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

ISNULL

Fungsi ISNULL harus diganti dengan fungsi COALESCE di PostgreSQL.

Contoh

MS SQL Server:

ISNULL(exp, replacement)

PostgreSQL:

COALESCE(exp, replacement)

SPASI

Fungsi SPACE di MS SQL Server harus diganti dengan fungsi REPEAT di PostgreSQL.

Contoh

MS SQL Server:

SPACE($n)

Dimana $n adalah jumlah spasi yang akan dikembalikan.

PostgreSQL:

REPEAT(‘ ’, $n)

DATEADD

PostgreSQL tidak menyediakan fungsi DATEADD yang mirip dengan MS SQL Server, Anda dapat menggunakan aritmatika datetime dengan literal interval untuk mendapatkan hasil yang sama.

Contoh

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’;

Penggabungan String

MS SQL Server menggunakan '+' untuk Penggabungan String sedangkan PostgreSQL menggunakan '||' untuk hal yang sama.

Contoh

MS SQL Server:

SELECT FirstName + LastName FROM employee;

PostgreSQL:

SELECT FirstName || LastName FROM employee;

CHARINDEX

Ada fungsi CHARINDEX di PostgreSQL. Anda dapat mengganti fungsi ini dengan fungsi POSITION setara PostgreSQL.

Contoh

MS SQL Server:

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

PostgreSQL:

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

GETDATE

Fungsi GETDATE mengembalikan tanggal dan waktu saat ini. Tidak ada fungsi GETDATE di PostgreSQL, tetapi ada fungsi SEKARANG() untuk tujuan yang sama. Jika ada beberapa kemunculan fungsi GETDATE maka Anda dapat mengotomatiskannya menggunakan ekstensi. Silakan periksa cara membuat modul menggunakan ekstensi.

Contoh

MS SQL Server:

SELECT GETDATE();

PostgreSQL:

SELECT NOW();

Alat

Anda dapat menggunakan beberapa alat untuk memigrasikan database MS SQL Server ke PostgreSQL. Silakan uji alat ini sebelum menggunakannya.

  1. Pgloader

    Anda dapat menggunakan alat pgloader untuk memigrasi database MS SQL ke PostgreSQL. Perintah di pgloader memuat data dari database MS SQL. Pgloader mendukung penemuan skema secara otomatis, termasuk pembuatan indeks, kunci utama, dan batasan kunci asing.

    Pgloader menyediakan berbagai aturan casting yang dapat mengubah tipe data MS SQL menjadi tipe data PostgreSQL.

  2. Sqlserver2pgsql

    Ini adalah alat migrasi sumber terbuka lainnya untuk mengubah database Microsoft SQL Server menjadi database PostgreSQL, seotomatis mungkin. Sqlserver2pgsql ditulis dalam Perl.

    Alat Sqlserver2pgsql melakukan dua hal:

    1. Ini mengubah skema SQL Server menjadi skema PostgreSQL
    2. Dapat menghasilkan jib Pentaho Data Integrator (Kettle) untuk memindahkan semua data dari SQL Server ke PostgreSQL. Ini adalah bagian opsional.

Pengujian

Menguji aplikasi dan database yang dimigrasikan sangat penting karena beberapa fungsi di kedua database sama, namun perilakunya berbeda.

Beberapa skenario umum perlu diperiksa:

  • Periksa apakah semua objek database telah dikonversi dengan benar atau tidak.
  • Periksa perilaku semua fungsi di DML berfungsi dengan benar atau tidak.
  • Muat data sampel ke kedua database dan periksa hasil semua kueri DML di kedua database. Hasil dari semua SQL harus sama.
  • Periksa kinerja DML dan tingkatkan jika perlu.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengakses file XML eksternal sebagai variabel dalam skrip PSQL (bersumber dari skrip bash)

  2. Bagaimana cara mengatur ulang urutan di postgres dan mengisi kolom id dengan data baru?

  3. Bagaimana UPDATE dan PILIH secara bersamaan

  4. Cara Mengonversi Kasus String di PostgreSQL

  5. Bagaimana cara mendapatkan data lokal ke dalam database hanya-baca menggunakan dplyr?