Export e import in database e violazione chiave primaria

Uso postgres come database.
Avevo necessita’ di variare la struttura di alcune tabelle cosi’ ho
esportato il contenuto delle tabelle presenti in file di testo
attraverso il comando COPY di postgres.
Ho cancellato e ricreato il database e le tabelle con la nuova
struttura e copiato, sempre col comando COPY, il contenuto dei files
di testo nelle tabelle.
Sembrava tutto ok quando, attraverso l’applicazione rails, ho tentato
di aggiungere un nuovo record.
Il risultato e’: duplicate key value violates unique constraint
"sectors_pkey Dettaglio: Key (id)=(1) already exists.
Ho sbagliato metodologia nell’export e import del database?

2010/12/23 Duilio R. [email protected]:

Il risultato e’: duplicate key value violates unique constraint
"sectors_pkey Dettaglio: Key (id)=(1) already exists.

Problema comune con PostgreSQL.

Per risolvere dai un occhiata a:

Fixing Sequences - PostgreSQL wiki

A dire il vero non ho capito bene quel codice, ho risolto semplicemente
facendo:
select setval(‘table_id_seq’, (select max(id) from table)+1);
Ho l’impressione che se non avessi droppato anche il db ma solo le
tabelle non sarei incorso in questo problema.

Ho sbagliato metodologia nell’export e import del database?

Cosa usi per il backup?
(pg_dump usa di default la direttiva COPY)

Si uso pg_dump.

Msan M. wrote in post #970290:

Uso postgres come database.
Avevo necessita’ di variare la struttura di alcune tabelle cosi’ ho
esportato il contenuto delle tabelle presenti in file di testo
attraverso il comando COPY di postgres.
Ho cancellato e ricreato il database e le tabelle con la nuova
struttura e copiato, sempre col comando COPY, il contenuto dei files
di testo nelle tabelle.
Sembrava tutto ok quando, attraverso l’applicazione rails, ho tentato
di aggiungere un nuovo record.
Il risultato e’: duplicate key value violates unique constraint
"sectors_pkey Dettaglio: Key (id)=(1) already exists.

Problema comune con PostgreSQL.

Per risolvere dai un occhiata a:

http://wiki.postgresql.org/wiki/Fixing_Sequences

Ho sbagliato metodologia nell’export e import del database?

Cosa usi per il backup?
(pg_dump usa di default la direttiva COPY)

Backup: $ pg_dump -U {user-name} {source_db} -f {dumpfilename.sql}

Restore: $ psql -U {user-name} -d {desintation_db}-f {dumpfilename.sql}

Backup tutti i db: $ pg_dumpall > all.sql

Restore tutti i db: $ psql -f all.sql postgres


Duilio R.
http://sinetris.info