Cara Mengimport Data dari PostgreSQL Sedia Ada ke dalam ServBay
ServBay ialah persekitaran pembangunan web tempatan yang berkuasa, khusus untuk pembangun. Ia menggabungkan pelbagai persekitaran bahasa, pelayan web serta sistem pangkalan data seperti PostgreSQL. Sekiranya anda sudah mempunyai pangkalan data PostgreSQL yang berjalan di luar ServBay dan ingin memindahkan datanya ke dalam contoh PostgreSQL ServBay, panduan ini menyediakan langkah-langkah terperinci untuk anda.
Dokumen ini akan menerangkan cara menggunakan alat standard PostgreSQL seperti pg_dump
dan pg_restore
, serta bagaimana menentukan laluan fail socket PostgreSQL ServBay untuk memastikan proses import data boleh dilakukan dengan lancar.
Pengenalan
Proses migrasi data pangkalan data PostgreSQL sedia ada ke dalam ServBay biasanya melibatkan langkah-langkah utama berikut:
- Mengeksport data dari pangkalan data PostgreSQL sumber.
- Menyediakan pangkalan data sasaran dalam PostgreSQL ServBay.
- Mengimport data yang telah dieksport ke dalam pangkalan data sasaran di ServBay.
- Mengesahkan integriti dan ketepatan data yang diimport.
Kami akan menguraikan setiap langkah dengan terperinci, termasuk cara menyambung ke ServBay melalui socket yang unik.
Senario Aplikasi
- Menyalin data dari persekitaran produksi atau ujian PostgreSQL ke dalam persekitaran pembangunan tempatan ServBay untuk tujuan pembangunan dan debugging.
- Memindahkan data daripada pemasangan PostgreSQL berasingan ke pengurusan pusat ServBay.
- Membina salinan pembangunan tempatan dalam ServBay yang konsisten dengan struktur dan data pangkalan data luaran.
Prasyarat
Pastikan anda memenuhi syarat-syarat berikut sebelum memulakan proses import data:
- ServBay telah dipasang dan berjalan: Pastikan anda telah memasang dan memulakan ServBay pada sistem macOS anda. PostgreSQL disertakan secara lalai.
- PostgreSQL dalaman ServBay aktif: Sahkan bahawa pakej PostgreSQL telah dimulakan melalui panel kawalan ServBay.
- PostgreSQL sumber tersedia: Anda mempunyai akses kepada contoh pangkalan data PostgreSQL sumber yang berjalan.
- Alat klien PostgreSQL telah dipasang: Alat baris arahan seperti
pg_dump
danpg_restore
perlu tersedia pada sistem anda. Ia biasanya dipasang bersama pelayan atau klien PostgreSQL. - Kebenaran akses pangkalan data: Pastikan anda mempunyai hak mengeksport dari PostgreSQL sumber dan hak untuk mencipta serta mengimport ke dalam PostgreSQL ServBay (biasanya sebagai pengguna super seperti
postgres
).
Langkah 1: Mengeksport Data dari PostgreSQL Sumber
Pertama, anda perlu mengeksport data dari pangkalan data sumber ke dalam satu fail, menggunakan alat pg_dump
.
Buka Terminal: Lancarkan aplikasi terminal anda.
Jalankan arahan eksport: Gunakan
pg_dump
untuk menyambung ke pangkalan data sumber dan eksport kandungan ke dalam fail pilihan anda.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: Ganti dengan nama pengguna PostgreSQL sumber.-d your_source_database_name
: Ganti dengan nama pangkalan data sumber yang ingin dieksport.-F c
: Tetapkan format keluaran sebagai format arkib custom. Ini disyorkan untuk digunakan bersamapg_restore
kerana lebih fleksibel (boleh pilih jadual atau data tertentu semasa pemulihan).-b
: Sertakan data objek besar (blobs).-v
: Mod verbose – paparkan maklumat proses eksport.-f mydatabase_source.dump
: Namakan dan tentukan laluan fail keluar. Anda boleh sesuaikan nama dan lokasi fail seperti/path/to/your/directory/mydatabase_source.dump
.
Berdasarkan konfigurasi sumber anda, mungkin anda perlu menambah parameter host (
-h
) atau port (-p
). Contoh jika port sumber bukan 5432:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1Anda mungkin akan diminta memasukkan kata laluan pengguna pangkalan data sumber apabila menjalankan arahan ini.
Langkah 2: Menyediakan Pangkalan Data Sasaran di ServBay
Sebelum mengimport, cipta pangkalan data kosong dalam contoh PostgreSQL ServBay.
Sambung ke PostgreSQL ServBay: PostgreSQL ServBay secara lalai disambung melalui socket fail yang terletak di direktori
/Applications/ServBay/tmp
. Gunakanpsql
untuk menyambung:bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
: Nama pengguna super lalai PostgreSQL. Kebiasaannya, inilah konfigurasi awal PostgreSQL ServBay.-h /Applications/ServBay/tmp
: Parameter utama! Arahan ini memaklumkanpsql
untuk bersambung melalui socket fail, bukan TCP/IP port.postgres
: Nama pangkalan data default (untuk tujuan pentadbiran).
Selepas dijalankan, masukkan kata laluan pengguna
postgres
jika diminta. Sekiranya anda lupa, semak panel kawalan ServBay atau dokumentasi terkait. Jika berjaya, anda akan lihat prompt arahanpsql
.Cipta pangkalan data sasaran: Dalam prompt
psql
, jalankan SQL berikut untuk mencipta pangkalan data baru. Disarankan namakan mengikut nama sumber, contohnyamydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1Ganti
mydatabase_servbay
mengikut kehendak anda. Setelah berjaya, taip\q
untuk keluar daripsql
.
Langkah 3: Import Data ke dalam PostgreSQL ServBay
Sekarang, gunakan pg_restore
untuk mengimport fail .dump
tersebut ke dalam pangkalan data di ServBay.
Buka Terminal: Sekiranya anda keluar dari terminal tadi, buka semula.
Jalankan arahan import: Gunakan
pg_restore
untuk sambung ke PostgreSQL ServBay dan masukkan data.bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: Guna pengguna super PostgreSQL ServBay.-d mydatabase_servbay
: Namakan pangkalan data sasaran yang telah anda cipta pada langkah 2.-v
: Paparkan proses dan sebarang ralat semasa import.mydatabase_source.dump
: Laluan dan nama fail.dump
yang dieksport sebelum ini.-h /Applications/ServBay/tmp
: Sekali lagi – pastikan anda sambung melalui laluan socket fail yang betul.
Anda mungkin akan diminta memasukkan kata laluan pengguna
postgres
. Proses import mengambil masa yang berbeza bergantung pada saiz dan kerumitan data.
Langkah 4: Sahkan Import Data
Selepas import selesai, anda perlu menyemak bahawa data tersebut berjaya dimasukkan ke dalam pangkalan data di ServBay.
Sambung ke pangkalan data sasaran ServBay:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1Ganti
mydatabase_servbay
dengan nama pangkalan data sasaran sebenar. Masukkan kata laluan jika diminta.Jalankan arahan semakan: Dalam prompt
psql
, gunakan beberapa perintah SQL untuk menyemak data.- Senaraikan jadual:
\dt
- Lihat data beberapa baris dari jadual tertentu:sqlGanti
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
dengan nama jadual sebenar. - Semak jumlah baris:sql
SELECT COUNT(*) FROM your_table_name;
1
Cara ini membolehkan anda mengesahkan struktur jadual, data dan bilangan baris adalah seperti dijangka.
- Senaraikan jadual:
Mengatasi Isu Keserasian
Walaupun versi PostgreSQL lazimnya adalah serasi antara satu sama lain, anda mungkin akan menghadapi isu tertentu apabila migrasi rentas versi atau dengan konfigurasi tertentu.
- Perbezaan versi: Jika versi PostgreSQL sumber dan sasaran berbeza besar, ciri atau sintaks tertentu mungkin tidak sama.
- Penyelesaian: Semak dokumentasi PostgreSQL berkaitan perubahan antara versi. Anda mungkin perlu ubahsuai fail eksport, atau jalankan skrip migrasi sebelum/selepas import.
- Ekstensi dan modul tidak serasi/hilang: Ekstensi tertentu (seperti
uuid-ossp
,pgcrypto
dsb.) atau fungsi buatan mungkin tidak dipasang atau serasi dalam PostgreSQL ServBay.- Penyelesaian: Sebelum atau selepas import, sambung ke pangkalan data sasaran dan pasang ekstensi yang diperlukan:sqlJika versi tidak serasi, cari alternatif, atau kemas kini PostgreSQL ServBay sekiranya tersedia.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- Penyelesaian: Sebelum atau selepas import, sambung ke pangkalan data sasaran dan pasang ekstensi yang diperlukan:
- Pengguna dan kebenaran: Lalai
pg_dump
mengeksport maklumat pengguna, peranan dan hak akses. Namun, objek ini kadang perlu dikonfigurasi semula di persekitaran ServBay.- Penyelesaian: Selepas import, cipta manual pengguna/peranan dan tetapkan hak mereka:sqlAnda juga boleh tambah pilihan
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Tetapkan hak lanjut jika perlu
1
2
3--no-owner
dan--no-acl
semasapg_dump
untuk abaikan maklumat pemilik/hak akses, kemudian tetapkan manual selepas import.
- Penyelesaian: Selepas import, cipta manual pengguna/peranan dan tetapkan hak mereka:
- Isu pengekodan aksara atau locale: Ketidaksesuaian pengekodan aksara (encoding) atau locale boleh menyebabkan ralat atau data rosak.
- Penyelesaian: Pastikan anda cipta pangkalan data sasaran dengan encoding dan locale sama dengan sumber:sqlTetapkan mengikut konfigurasi pangkalan data sumber anda.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- Penyelesaian: Pastikan anda cipta pangkalan data sasaran dengan encoding dan locale sama dengan sumber:
Jika berlaku masalah, teliti output terperinci pg_restore
(parameter -v
sangat membantu) untuk kenal pasti punca kesalahan.
Catatan Penting
- Laluan Socket ServBay: PostgreSQL dalam ServBay lazimnya hanya boleh diakses melalui socket di
/Applications/ServBay/tmp
. Pastikan anda sentiasa guna-h /Applications/ServBay/tmp
dalam semua arahan berkaitan. - Isu hak akses: Pastikan pengguna yang menjalankan arahan mempunyai hak baca/tulis ke fail eksport dan pengguna PostgreSQL (seperti
postgres
) cukup hak untuk mencipta pangkalan data dan melakukan import data. - Saiz fail: Untuk pangkalan data besar, proses import dan eksport mungkin mengambil masa dan ruang cakera besar. Sediakan sumber mencukupi.
- Pengurusan kata laluan: Anda perlukan kata laluan akaun
postgres
untuk sambung ke PostgreSQL ServBay. Pastikan ia disimpan dengan selamat.
Soalan Lazim (FAQ)
S1: Saya lupa kata laluan pengguna postgres
untuk PostgreSQL ServBay. Apa perlu dilakukan?
J1: Anda boleh semak atau set semula kata laluan root (postgres) melalui panel kawalan ServBay atau rujuk dokumentasi rasmi ServBay.
S2: Mengapa saya tidak boleh sambung ke PostgreSQL ServBay menggunakan localhost
atau 127.0.0.1
?
J2: Secara lalai, PostgreSQL ServBay hanya menerima sambungan melalui socket fail untuk keselamatan. Jika perlu akses TCP/IP, anda perlu ubah konfigurasi PostgreSQL pada ServBay (lalai tidak digalakkan bagi pembangunan tempatan). Gunakan -h /Applications/ServBay/tmp
untuk sambungan standard.
S3: Terdapat ralat semasa import, bagaimana ingin menyelesaikannya?
J3: Periksa output arahan pg_restore
terutama apabila guna -v
. Maklumat ralat biasanya menjelaskan masalah sebenar seperti sintaks, hak akses, objek telah wujud atau tiada, dan sebagainya. Rujuk bab "Mengatasi Isu Keserasian" untuk penyelesaian lanjut.
S4: Bolehkan saya guna alat lain (seperti pgAdmin) untuk import?
J4: Boleh, anda boleh gunakan alat pengurusan pangkalan data berasaskan grafik seperti pgAdmin. Semasa sambungan, tetapkan "Host/socket path" sebagai /Applications/ServBay/tmp
, tidak perlu isikan nama host atau IP. Kemudian gunakan fungsi import/restore yang disediakan untuk fail .dump
.
Rumusan
Mengimport data dari pangkalan data PostgreSQL sedia ada ke dalam PostgreSQL ServBay adalah amalan biasa. Dengan menggunakan alat standard seperti pg_dump
dan pg_restore
serta menentukan laluan socket dengan betul (-h /Applications/ServBay/tmp
), anda boleh melaksanakan migrasi data dengan cekap. Ikuti setiap langkah yang dicadangkan dan beri perhatian kepada isu keserasian. Ini membolehkan anda menyediakan persekitaran pembangunan tempatan dalam ServBay yang konsisten dengan pangkalan data luaran anda. ServBay menawarkan kemudahan integrasi kepada pembangun, menjadikan pengurusan dan migrasi pangkalan data lebih mudah.