Thomas, would you send me a context diff (diff -c) of the change and I
will get into 7.4.  Thanks.

---------------------------------------------------------------------------

Thomas Behr wrote:
> Your name               : Thomas Behr
> Your email address      : [EMAIL PROTECTED]
> System Configuration
> ---------------------
>   Architecture (example: Intel Pentium)         :   ALL
>   Operating System (example: Linux 2.0.26 ELF)  :   ALL
>   PostgreSQL version (example: PostgreSQL-7.3.3):   PostgreSQL-7.3.3
>   Compiler used (example:  gcc 2.95.2)          :   WorkShop Compilers 5.0 98/12/15 
> C 5.0
> Please enter a FULL description of your problem:
> ------------------------------------------------
>   dbf2pg  -  Insert  xBase-style  .dbf-files  into  a PostgreSQL-table
>   There is an option "-s oldname=newname", which changes the old field name of  
>   the dbf-file to the newname in PostgeSQL. If the length of the new name is 0, 
>   the field is skiped. If you want to skip the first field of the dbf-file,
>   you get the wildest error-messages from the backend.
>   dbf2pg load the dbf-file via "COPY tablename FROM STDIN". If you skip the
>   first field, it is an \t to much in STDIN.
> Please describe a way to repeat the problem.   Please try to provide a
> concise reproducible example, if at all possible:
> ----------------------------------------------------------------------
>   dbf2pg -s first_field_name=,other_fieldname=,reserved_fieldname=new_fieldname 
>  -c -d testdb -t testtable -h dbhost -U testuser -F IBM437 -T ISO-8859-1 -vv 
> test.dbf 
> 
> If you know how this problem might be fixed, list the solution below:
> ---------------------------------------------------------------------
> 
>     440     /* build line and submit */
>     441     result = dbf_get_record(dbh, fields, i); 
>     442     if (result == DBF_VALID)
>     443     {           
>     444       query[0] = '\0';  
>     445       for (h = 0; h < dbh->db_nfields; h++)
>     446       {                 
>     447         if (!strlen(fields[h].db_name))
>     448           continue;                     
>     449 
>     450         if (h != 0)   /* not for the first field! */    
>     451           strcat(query, "\t");    /* COPY statement field
>     452                          * separator */
> 
> 
> 
> A fix could be an counter j=0, which increments only, if a field is imported 
> (IF (strlen(fields[h].db_name)> 0) j++. And only if j > 1 (if an other field is 
> imported) the \t is printed.
> 
> ...
> int j;
> ...
> 
>  if (result == DBF_VALID)
>     {
>       query[0] = '\0';
>       j = 0;
>       for (h = 0; h < dbh->db_nfields; h++)
>       {
>         if (!strlen(fields[h].db_name))
>         {
>           continue;
>         }
>         else
>         {
>           j++;
>         }
> 
>         if (j > 1)   /* not for the first field! */
>           strcat(query, "\t");    /* COPY statement field
>                          * separator */
> 
> 
> An other small bug in the README:
> -s start
>               Specify  the  first record-number in the xBase-file
>               we will insert.
> should be
> -e start
>               Specify  the  first record-number in the xBase-file
>               we will insert.
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to