change data type int4 to serial
Hi,
I am experimenting a migration of an M$ Access database to postgresql in a
Debian GNU/Linux system. Based on some reading, I've approached it as
follows:
1. Using mdbtools, export the tables from Access to *.csv files,
sanitizing file names and column names.
2. Using unixodbc and GNU R's package RODBC, import the tables to an empty
database in postgresql; i.e. create a database in postgresql, read the
tables into R for cleaning up mbdbtools' job and let RODBC import the
tables into postgresql, specifying the data type for
date/time/timestamp columns.
Checking the results in pgadmin, this proceeded fine, but now that I want
to specify the primary and foreign keys in the tables, I see that the
columns needed for this were imported as int4 data type. I would like
these to be automatically sequenced, so need them to be 'serial'. Going
into "properties" for these columns in pgadmin, the 'serial' option is not
available in the "data type" pull-down menu. Is this not possible? Can
the 'serial' data type be specified during import. Thanks in advance.
Cheers,
--
Seb
On Wed, Feb 21, 2007 at 11:20:38 -0600,
Seb <spluque@gmail.com> wrote:
Checking the results in pgadmin, this proceeded fine, but now that I want
to specify the primary and foreign keys in the tables, I see that the
columns needed for this were imported as int4 data type. I would like
these to be automatically sequenced, so need them to be 'serial'. Going
into "properties" for these columns in pgadmin, the 'serial' option is not
available in the "data type" pull-down menu. Is this not possible? Can
the 'serial' data type be specified during import. Thanks in advance.
'serial' is a psuedo type that uses a DEFAULT that references a SEQUENCE.
In recent versions of postgres a dependency is set up so that you can't
delete the sequence while it is being referenced.
You can create the sequence manually, set an appropiate starting value and
use ALTER TABLE to change the default for the column to use nextval to
get the next sequence value.