Pgsql
Scopo della guida
Semplicemente aiutare chi per vari motivi
vuole passare da Mysql a Postgresql,vi
avviso che non è una guida su come usare
un db relazionale ma solo su come avviare
correttamente psql su Slackware e come
esportare i db da mysql a psql senza utilizzare
assurde soluzioni commerciali.
Installazione e configurazione
Una piccola premessa:per usare pgsql è necessario
abilitare la shm(shared memory)
in fstab aggiungiamo questa linea(se non presente)
tmpfs /dev/shm tmpfs defaults 0 0 |
se poi non pgsql non partirà(controllate in var/log)
allora avviate questo script
# SHM settings shmmaxPath=/proc/sys/kernel/shmmax shmmaxMinValue=268435456 # 256MB # Make sure the system has enough shared memory available to cover shmmaxMinValue. # To handle overflow/wrapping, check that shmmax is greater than 1 since any overflow # will make shmmax look negative. At least until shmmax or shmmaxMinValue wrap around if [ -f "$shmmaxPath" ]; then shmmax=`cat $shmmaxPath` if (( $shmmax < 1 )) || (( $shmmaxMinValue < 1 )) \ || (( $shmmax < $shmmaxMinValue )) ; then echo "$shmmaxMinValue" > "$shmmaxPath" echo "Setting the max shared memory the system will allow to $shmmaxMinValue." |
Dopo aver installato postgresql(lo trovate su slacky)
Ora creiamo il db di sistema(una sorta
di cuore di psql) per prima cosa editiamo /etc/rc.d/rc.pgsql
e cambiamo la linea dbcluster
DBCLUSTER=/var/lib/pgsql |
questo passo non è necessario,ma personalmente mi sembra più
ordinato /var/lib/pgsql piuttosto che /home/db
ora creiamo il db
# mkdir -p /var/lib/pgsql # mkdir -p /var/log/pgsql/ # chown pgsql:pgsql /var/log/pgsql # chown pgsql:pgsql /var/lib/pgsql # su pgsql # initdb -D /var/lib/pgsql |
poi facciamo partire pgsql con il classico
# /etc/rc.d/rc.pgsql start |
e infine creiamo gli utenti
# su psql # createuser -d -P -E -W root # createuser -D -P -E -W vostronome |
il primo utente è l'amministratore(potete usare
al posto di root admin o quello che vi pare).
Da mysql a pgsql
eseguiamo il dump con mysqldump (meglio farne uno per ogni db)
$ mysqldump libri > libri $ mysqldump musica > musica $ mysqldump dvd > dvd |
ora creiamo con pgsql i 3 database vuoti
$ createdb libri $ createdb musica $ createdb dvd |
scarichiamo uno script per la conversione(funziona benissimo
converte dati e tabelle ma NON le viste)
$ mysql2pgsql --char2varchar --preserve_case --enc_in=latin1
--enc_out=latin1libri libri.sql $ mysql2pgsql --char2varchar --preserve_case --enc_in=latin1 --enc_out=latin1musica musica.sql $ mysql2pgsql --char2varchar --preserve_case --enc_in=latin1 --enc_out=latin1dvd dvd.sql |
ora importiamo i dumps(file.sql) in pgsql
$ psql < libri.sql libri $ psql < musica.sql musica $ psql < dvd.sql dvd |
fatto,siamo pronti a usare i nostri db in pgsql.
Pillole
Come far girare pgsql solo in locale(socket unix senza
connessioni esterne)?
Editate /var/lib/pgsql/postgresql.conf alla linea 59
listen_addresses =' ' |
Vorrei una applicazione grafica per
gestire i db.
Su Slacky trovate il superbo
Pgadmin
Come posso recuperare il backup di un
db partendo da 0?
Create con createuser il superutente root e
recuperate il db con
psql -f nomdelbackup postgres |
Ultimo aggiornamento 15/07/09
Torna all'indice