summaryrefslogtreecommitdiff
path: root/contrib/dbase/dbf2pg.c
diff options
context:
space:
mode:
authorBruce Momjian2003-07-31 02:12:43 +0000
committerBruce Momjian2003-07-31 02:12:43 +0000
commit82bade79dce6ff239cba1491c5843ea8ba2bfcc8 (patch)
tree7781f7715a4b3dc50c6ae36c26a5b39b27c26762 /contrib/dbase/dbf2pg.c
parent52347b66370988e55b5b55d78d54ec8f13d1123b (diff)
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. 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. 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. Thomas Behr
Diffstat (limited to 'contrib/dbase/dbf2pg.c')
-rw-r--r--contrib/dbase/dbf2pg.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/contrib/dbase/dbf2pg.c b/contrib/dbase/dbf2pg.c
index b57b5c76885..0ae53cd126d 100644
--- a/contrib/dbase/dbf2pg.c
+++ b/contrib/dbase/dbf2pg.c
@@ -194,7 +194,7 @@ usage(void)
printf("dbf2pg\n"
"usage: dbf2pg [-u | -l] [-h hostname] [-W] [-U username]\n"
" [-B transaction_size] [-F charset_from [-T charset_to]]\n"
- " [-s oldname=newname[,oldname=newname[...]]] [-d dbase]\n"
+ " [-s oldname=[newname][,oldname=[newname][...]]] [-d dbase]\n"
" [-t table] [-c | -D] [-f] [-v[v]] dbf-file\n");
}
@@ -359,6 +359,7 @@ do_inserts(PGconn *conn, char *table, dbhead * dbh)
field *fields;
int i,
h,
+ j,
result;
char *query,
*foo;
@@ -442,12 +443,19 @@ do_inserts(PGconn *conn, char *table, dbhead * dbh)
if (result == DBF_VALID)
{
query[0] = '\0';
+ j = 0; /* counter for fields in the output */
for (h = 0; h < dbh->db_nfields; h++)
{
- if (!strlen(fields[h].db_name))
+ if (!strlen(fields[h].db_name)) /* When the new fieldname is empty, the field is skipped */
+ {
continue;
+ }
+ else
+ {
+ j++;
+ }
- if (h != 0) /* not for the first field! */
+ if (j > 1) /* not for the first field! */
strcat(query, "\t"); /* COPY statement field
* separator */