NAME
    pgloader.pl - loads data to Postgres tables

SYNOPSIS
      pgloader.pl  -siTV  person 
      pgloader.pl  --help

DESCRIPTION
    *pgloader.pl* loads tables to a Postgres database. It is similar to the
    pgloader(1) python program, written by other authors. Data are read from
    the file specified in the configuration file (defaults to pgloader.dat).

    This version of pgloader exhibits the -i option which (when activated)
    drops all table indexes and recreates them again after COPY. In case of
    errors, everything rolls back to the initial state. This version also
    allows the libpq 'service' database connection method.

    The configuration file and command options are almost identical to the
    python pythod pgloader(1) and is meant to be a drop-in replacement.
    Configuration entries are ignored for unimplemented features. The core
    functionality and many usefull features are already implemented; read
    further to find what is currently available.

OPTIONS
     -q                         quiet  mode     (same as loglevel=1)
     -v                         verbose mode    (same as loglevel=3)
     -d                         debug  mode     (same as loglevel=4)
     -l,  --loglevel            set loglevel 1 to 4  . Defaults to 2
     -c,  --config              configuration file; defaults to "pgloader.conf"
     -g,  --generate            generate a sample configuration file
     -i,  --indexes             disable indexes during COPY
     -n,  --dry_run             dry_run
     -s,  --summary             show summary
     -D,  --disable_triggers    disable triggers during loading
     -T,  --truncate            truncate table before loading 
     -V,  --vacuum              vacuum analyze table after loading
     -C,  --count               number of lines to process 
          --version             show version and exit
     -F,  --from                process from this line number

CONFIGURATION FILE
    The configuration file (default is pgloader.conf), follows the ini
    configuration format, and is divided into these sections:

    [pgslq]
        This section is the only mandatory section, and defines how to
        access the database.

         base           [required]  name of the database
         host           [optional]  hostname to connect. Default is 'localhost'
         port           [optional]  port number. Default is 5432
         user           [optional]  name of login user. Default is epid of user
         pass           [optional]  user password. Not needed if using libpq defaults.
         pgsysconfdir   [optional]  dir for PGSYSCONFDIR
         service                    mandatory only when pgsysconfdir ( or the 
                                    enviromental variable PGSYSCONFDIR ) is defined;
                                    otherwise it is ignored

    [template1]
        This section defines templates. In this case, the name was arbitrary
        chosen as template1. The purpose of templates is to hold default
        values for other table sections (defined bellow). You may define an
        unlimited number of template sections. The only mandatory entry for
        this section is 'template':

         template   when defined, the template as enabled; leave it blank 
                    to disable it.

    [person]
        This is the table section. The name person was arbitrary choosen,
        you can define an unlimited number of table sections. If the name of
        a table section appears on the command line (when invoking
        pgloader.pl) the corresponding table section defines how to load
        this table. Try to keep the name of the section the same as the name
        of the table. In a table section you can define the following
        parameters:

         filename          filename with data for the table       [mandatory]

         table             [Mandatory]  tablename or use schema.tablename. 
                           Defaults to section name               [mandatory]

         use_template      template to use for default values      [optional]

         field_sep         Delimiter that separates fields. The default for
                           text formats is TAB, and for csv formats is ',' 

         format            must be either 'text' or 'csv' (without the 
                           quotes).  Default is text.

         copy_columns      names of columns to use for COPY.       [optional]
                           The char '*' means all columns, but since this is 
                           also the default you may as well leave it blank
                           Example:  copy_columns = first, last, age
                                     copy_columns = *

         only_cols         which column numbers to COPY ; counting [optional]
                           starts from 1. The char '*' means all columns, but 
                           since this is also the default you may as well 
                           leave it blank. Example: only_cols = 1-2, 3, 5
                                                    only_cols = 3

         quotechar         Usefull only for csv formats. Default is "

         null              String that designates a NULL value ; 
                           usefull only for text mode. Default is string '\NA'

         skipinitialspace  when defined, we ignore leading and trailing 
                           whitespace

         udc_COLUMNAME    assign this value for all rows of column COLUMNAME
                          Examples: udc_title = Sir 
                                        udc_age   = 99 
                                        udc_race  = white

         reformat         reformat values of the age column by passing 
                          it to function upper(), in the John::Util module
                          reformat = age:John::Util::upper

	 copy             names of columns found in data file    [optional]
                          Defauls to * , which uses the same column order found
                          in the table definition inside postgres. Useful when
                          your file contains data in different order.
                          Example:  copy = age, last, first
                                    copy = first:3, age:1, last:2

         copy_every       How many tuples to copy per transaction. 
                          More transactions are automatically created to 
                          insert the rest of the date, each inserting
                          upto that many tuples. Defaults is 10_000

        NOTE: Because of how the ini format is defined as a value separator,
        if you need to include the , char, you must escape it with \ . For
        example: field_sep = \, sets field_sep to char ','

SEE ALSO
    http://pgfoundry.org/projects/pgloader/ hosts the official python
    project.  This project has nothing to do with this Perl program.


AUTHOR
    Ioannis Tambouras, <ioannis@cpan.org>

COPYRIGHT AND LICENSE
    Copyright (C) 2008 by Ioannis Tambouras

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself, either Perl version 5.10.0 or, at
    your option, any later version of Perl 5 you may have available.
