[GRASSLIST:4639] Re: creating a table from ascii data?
Hamish
hamish_nospam at yahoo.com
Tue Oct 26 02:17:08 EDT 2004
> > I am trying to convert a multi column text file[*] into a table
> > which I can then connect to a (5.7) vector map. I can't quite see
> > how to do this. Any ideas?
> > This is for a script, so "use OpenOffice & save as DBF" won't work.
> >
> > [*] say .csv file; col1=cat col2=attr, etc.
>
> How about the PostgreSQL copy command?
[yes, that is the command I was looking for]
I'm still having problems:
NAME=vector_map
ATTR_FILE="${TMP}.route_atts" # includes absolute path
ATTR_COLS='cat int, route_id int, name varchar(20), start_wpt varchar(10)'
# check that 'db.connect -p' exists
# create attr database
echo "CREATE TABLE $NAME ($ATTR_COLS)" | db.execute
# next populate it
echo "COPY $NAME FROM '$ATTR_FILE'" | db.execute
# finally connect it to existing vector map
v.db.connect map="$NAME" table="$NAME"
The COPY step gives an error though:
($GISDBASE/$LOCATION/$MAPSET/.tmp/$HOSTNAME/ shortened to /tmp here)
[...]
v.in.ascii: line vector "test_rte" successfully created
D2/5: add_table(): table = test_rte name = test_rte.dbf
D3/5: sql: COPY test_rte FROM '/tmp/23569.0.route_atts'
DBMI-DBF driver error:
SQL parser error in statement:
COPY test_rte FROM '/tmp/23569.0.route_atts'
Error in db_execute_immediate()
WARNING: Error while executing: "COPY test_rte FROM
'/tmp/23569.0.route_atts'
"
I don't see the parser error.
I could probably do "INSERT INTO table VALUES (values, ..)" line by
line, but that seems wasteful and slow.
Hamish
More information about the grass-user
mailing list