Cara Import Data dari PostgreSQL Sedia Ada ke ServBay
ServBay ialah persekitaran pembangunan web tempatan yang berkuasa untuk pembangun, mengintegrasi pelbagai bahasa, pelayan web dan sistem pangkalan data termasuk PostgreSQL. Jika anda mempunyai pangkalan data PostgreSQL yang berjalan di luar ServBay dan ingin memindahkan datanya ke dalam instance PostgreSQL yang disediakan ServBay, panduan ini akan membantu anda melakukan proses tersebut langkah demi langkah.
Dokumen ini menerangkan cara menggunakan alat rasmi PostgreSQL iaitu pg_dump
dan pg_restore
, serta bagaimana menentukan laluan socket ServBay PostgreSQL untuk proses import supaya migrasi data anda berjalan lancar.
Pengenalan
Proses migrasi data pangkalan data PostgreSQL ke ServBay biasanya melibatkan langkah-langkah berikut:
- Mengekstrak data dari pangkalan data sumber PostgreSQL.
- Menyediakan pangkalan data tujuan dalam PostgreSQL ServBay.
- Mengimport data yang diekstrak ke pangkalan data tujuan ServBay.
- Memastikan integriti dan ketepatan data yang telah diimport.
Kami akan jelaskan setiap langkah ini secara terperinci serta cara pengendalian sambungan khas ServBay (melalui socket file).
Kes Kegunaan
- Menyalin data dari pangkalan data produksi atau ujian PostgreSQL ke ServBay bagi tujuan pembangunan dan debug.
- Migrasi data dari PostgreSQL yang dipasang secara berasingan ke pengurusan berpusat ServBay.
- Membina salinan pembangunan tempatan dalam ServBay yang sepadan dengan struktur dan data pangkalan data luaran.
Pra-syarat
Pastikan perkara berikut dipenuhi sebelum memulakan proses import data:
- ServBay Telah Dipasang & Berfungsi: Pastikan ServBay telah dipasang pada sistem macOS anda dan dalam keadaan berjalan. ServBay secara lalai menyertakan PostgreSQL.
- PostgreSQL Dalaman ServBay Telah Dimulakan: Sahkan dalam panel kawalan ServBay bahawa pakej PostgreSQL telah diaktifkan.
- PostgreSQL Sumber Telah Dipasang: Anda mesti mempunyai instance pangkalan data sumber PostgreSQL yang boleh diakses dan berjalan.
- Alat Klien PostgreSQL Telah Dipasang: Pastikan alat command line seperti
pg_dump
danpg_restore
tersedia di sistem anda. Biasanya ia dipasang bersama dengan pelayan atau klien PostgreSQL. - Kebenaran Akses Pangkalan Data: Pastikan anda mempunyai hak eksport dari pangkalan data sumber, serta hak untuk mencipta pangkalan data dan mengimport data ke PostgreSQL dalaman ServBay (kebiasaannya sebagai pengguna super, iaitu pengguna
postgres
).
Langkah 1: Mengekstrak Data dari PostgreSQL Sumber
Pertama, eksport data pangkalan data sumber ke dalam satu fail menggunakan alat pg_dump
.
Buka Terminal: Lancarkan aplikasi terminal anda.
Jalankan Perintah Eksport: Gunakan perintah
pg_dump
untuk menyambung pangkalan data sumber dan eksport isinya ke fail tertentu.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: Gantikan dengan nama pengguna untuk sambungan ke PostgreSQL sumber.-d your_source_database_name
: Isi nama pangkalan data yang hendak dieksport.-F c
: Tentukan format arkib tersuai bagi output. Format ini disyorkan untukpg_restore
kerana ia menyokong opsyen pemulihan fleksibel (misalnya pemulihan terpilih bagi jadual tertentu atau data).-b
: Sertakan data objek besar (blobs).-v
: Aktifkan output terperinci, memaparkan kemajuan eksport.-f mydatabase_source.dump
: Nama dan laluan fail output. Anda boleh tetapkan nama dan lokasi mengikut kesesuaian, contohnya/path/to/your/directory/mydatabase_source.dump
.
Bergantung kepada konfigurasi pangkalan data sumber anda, anda mungkin perlu tentukan hos (
-h
) atau port (-p
). Sekiranya pangkalan data sumber dihoskan secara tempatan dan portnya bukan 5432 (lalai):bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1Selepas perintah dijalankan, sistem mungkin meminta kata laluan pengguna pangkalan data sumber.
Langkah 2: Sediakan Pangkalan Data Tujuan ServBay
Sebelum mengimport data ke ServBay, anda perlu wujudkan pangkalan data kosong dalam instance PostgreSQL ServBay.
Sambung ke PostgreSQL ServBay: PostgreSQL ServBay dikonfigurasikan untuk sambungan tempatan melalui socket file, biasanya terletak di
/Applications/ServBay/tmp
. Sambunglah menggunakan alat klienpsql
.bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
:postgres
ialah pengguna super lalai PostgreSQL. Konfigurasi ServBay biasanya menggunakan pengguna ini.-h /Applications/ServBay/tmp
: Inilah parameter penting untuk sambungan ke ServBay PostgreSQL. Ia mengarahkanpsql
untuk sambung melalui socket file di directory tertentu, bukan melalui port TCP/IP.postgres
: Nama pangkalan data lalai untuk tujuan pengurusan.
Anda mungkin akan diminta untuk memasukkan kata laluan pengguna
postgres
. Jika tidak pasti kata laluan, sila rujuk panel kawalan ServBay atau dokumentasi berkaitan untuk menyemak atau reset. Setelah berjaya, anda akan melihat prompt baris perintahpsql
.Cipta Pangkalan Data Tujuan: Dalam prompt
psql
, jalankan arahan SQL untuk mencipta pangkalan data baru yang akan menampung data import. Sebaiknya gunakan nama yang serupa dengan sumber, misalnyamydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1Gantikan
mydatabase_servbay
dengan nama pilihan anda. Sebaik sahaja dibuat, anda boleh masukkan\q
untuk keluar dari promptpsql
.
Langkah 3: Import Data ke PostgreSQL ServBay
Kini, gunakan alat pg_restore
untuk mengimport file .dump
yang dieksport ke pangkalan data tujuan di ServBay.
Buka Terminal: Jika keluar dari terminal sebelum ini, buka semula aplikasi terminal.
Jalankan Perintah Import: Gunakan perintah
pg_restore
untuk sambung ke ServBay PostgreSQL dan import data.bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: Sambung sebagai pengguna super PostgreSQL ServBay.-d mydatabase_servbay
: Masukkan nama pangkalan data tujuan yang dibuat dalam langkah sebelumnya.-v
: Aktifkan output terperinci untuk status import dan laporan ralat.mydatabase_source.dump
: Nama dan laluan fail.dump
yang dieksport.-h /Applications/ServBay/tmp
: Sekali lagi, ini parameter penting untuk sambungan melalui socket file PostgreSQL ServBay.
Anda akan diminta untuk memasukkan kata laluan pengguna
postgres
ServBay. Tempoh import bergantung kepada saiz dan kerumitan fail eksport.
Langkah 4: Sahkan Data Import
Selepas proses import tamat, pastikan data telah berjaya dipindahkan ke pangkalan data tujuan ServBay.
Sambung ke Pangkalan Data Tujuan ServBay:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1Gantikan
mydatabase_servbay
sesuai dengan nama pangkalan data anda. Selepas memasukkan kata laluan, anda akan tersambung.Jalankan Query Pengesahan: Dalam prompt
psql
, gunakan SQL berikut untuk menyemak data.- Senarai semua jadual:
\dt
- Papar beberapa barisan data dari jadual tertentu:sqlGantikan
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
dengan nama jadual sebenar dalam pangkalan data anda. - Semak jumlah baris:sql
SELECT COUNT(*) FROM your_table_name;
1
Melalui query-query ini, anda boleh memastikan struktur jadual, data, dan bilangan baris adalah seperti yang diharapkan.
- Senarai semua jadual:
Menangani Isu Keserasian
Walaupun kebanyakan versi PostgreSQL adalah serasi antara satu sama lain, migrasi antara versi berbeza atau konfigurasi khusus mungkin menimbulkan masalah.
- Perbezaan Versi: Jika versi PostgreSQL antara sumber dan tujuan berbeza jauh, sesetengah fungsi, sintaks atau katalog sistem mungkin tidak sama.
- Cara Atasi: Rujuk dokumen rasmi PostgreSQL mengenai perubahan antara dua versi yang digunakan. Anda mungkin perlu edit fail SQL eksport ataupun jalankan skrip migrasi tertentu sebelum atau selepas import.
- Ketidakserasian atau Ketiadaan Extension/Modul: Jika sumber menggunakan extension misalnya
uuid-ossp
,pgcrypto
atau fungsi tersuai, extension tersebut mungkin tidak wujud dalam PostgreSQL ServBay atau tidak serasi.- Cara Atasi: Sebelum atau selepas import, sambung ke pangkalan data tujuan ServBay dan pasang extension yang diperlukan:sqlJika versi extension tidak serasi, cari alternatif atau kemas kini pakej PostgreSQL ServBay sekiranya tersedia.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- Cara Atasi: Sebelum atau selepas import, sambung ke pangkalan data tujuan ServBay dan pasang extension yang diperlukan:
- Pengguna & Kebenaran:
pg_dump
lazimnya mengeksport maklumat pengguna, peranan dan kebenaran, namun objek ini mungkin perlu diwujudkan atau dikemaskini dalam ServBay secara manual, terutamanya jika pengguna sumber bukan pengguna lalai ServBay.- Cara Atasi: Selepas import, sambung ke PostgreSQL ServBay dan cipta pengguna serta peranan yang diperlukan, kemudian tetapkan kebenaran:sqlAnda juga boleh gunakan opsyen
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Tambahkan kebenaran spesifik mengikut keperluan
1
2
3--no-owner
dan--no-acl
dalampg_dump
untuk mengecualikan maklumat owner dan kebenaran, kemudian tetapkan secara manual selepas import.
- Cara Atasi: Selepas import, sambung ke PostgreSQL ServBay dan cipta pengguna serta peranan yang diperlukan, kemudian tetapkan kebenaran:
- Isu Pengekodan Aksara atau Locale: Penetapan pengekodan atau locale yang berbeza antara sumber dan tujuan boleh menyebabkan ralat import atau data terjejas.
- Cara Atasi: Pastikan anda cipta pangkalan data ServBay dengan pengekodan dan locale yang sama seperti pangkalan data sumber. Anda boleh tentukan opsyen
ENCODING
danLOCALE
dalam perintahCREATE DATABASE
:sqlLaraskan mengikut tetapan sebenar pangkalan data sumber.CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- Cara Atasi: Pastikan anda cipta pangkalan data ServBay dengan pengekodan dan locale yang sama seperti pangkalan data sumber. Anda boleh tentukan opsyen
Sekiranya berlaku isu, teliti output terperinci dari pg_restore
(opsyen -v
sangat membantu), biasanya ia menunjukkan punca masalah.
Perkara-perkara Penting
- Laluan Socket ServBay: PostgreSQL ServBay lazimnya menerima sambungan melalui socket di
/Applications/ServBay/tmp
. Pastikan anda memasukkan parameter-h /Applications/ServBay/tmp
untuk semua sambungan (psql
,pg_dump
,pg_restore
). - Isu Kebenaran: Pastikan pengguna yang melaksanakan perintah mempunyai hak akses yang diperlukan untuk membaca, menulis fail eksport dan sambungan ke pangkalan data PostgreSQL sebagai pengguna yang mempunyai kuasa untuk cipta/ubah pangkalan data serta import data.
- Saiz Fail: Untuk pangkalan data besar, proses import dan eksport mungkin mengambil masa lama dan memerlukan ruang cakera besar. Pastikan anda mempunyai sumber mencukupi.
- Pengurusan Kata Laluan: Sambungan ke PostgreSQL ServBay memerlukan kata laluan pengguna
postgres
. Pastikan anda menyimpan kata laluan ini dengan selamat.
Soalan Lazim (FAQ)
Q1: Apa hendak dibuat jika saya terlupa kata laluan pengguna postgres
ServBay PostgreSQL?
A1: Anda boleh semak atau reset kata laluan root (postgres) PostgreSQL melalui panel kawalan ServBay atau dokumentasi ServBay yang berkaitan.
Q2: Mengapa saya tidak boleh sambung ke PostgreSQL ServBay menggunakan localhost
atau 127.0.0.1
?
A2: PostgreSQL ServBay secara lalai hanya menerima sambungan melalui socket file tempatan untuk tujuan keselamatan. Untuk sambungan melalui TCP/IP, anda perlu mengubah konfigurasi fail ServBay PostgreSQL (ini tidak disyorkan untuk persekitaran pembangunan tempatan). Sambungan lalai yang betul ialah menggunakan parameter -h /Applications/ServBay/tmp
.
Q3: Bagaimana menyelesaikan ralat semasa proses import?
A3: Teliti output perintah pg_restore
, terutamanya dengan opsyen -v
untuk maklumat terperinci. Isi ralat biasanya merujuk kepada punca spesifik, seperti kesalahan sintaks, kekurangan kebenaran, atau objek telah wujud/tidak wujud. Rujuk bahagian "Menangani Isu Keserasian" untuk panduan lanjut.
Q4: Bolehkah saya gunakan alat pengurusan pangkalan data lain seperti pgAdmin untuk import?
A4: Ya, anda boleh gunakan alat pengurusan pangkalan data berpandangan grafik seperti pgAdmin. Pastikan anda tetapkan Host/socket path kepada /Applications/ServBay/tmp
dalam tetapan sambungan, bukan hostname atau IP. Gunakan fungsi import/pemulihan dari fail .dump
yang disediakan alat tersebut.
Kesimpulan
Memindahkan data pangkalan data PostgreSQL sedia ada ke dalam instance PostgreSQL ServBay merupakan operasi lazim, dan dapat dilakukan secara efisien dengan menggunakan alat rasmi pg_dump
dan pg_restore
serta penetapan parameter socket sambungan ServBay (-h /Applications/ServBay/tmp
). Ikuti langkah-langkah yang dijelaskan di atas serta perhatikan isu keserasian untuk memastikan proses migrasi berjalan lancar. ServBay menawarkan persekitaran pembangunan tempatan yang bersepadu, memudahkan pengurusan serta migrasi pangkalan data untuk pembangun.