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

Supponiamo abbiate 3 db mysql:libri,musica,dvd

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