[GRASS-user] Rename multiple sqlite columns at once
Nikos Alexandris
nikos.alexandris at felis.uni-freiburg.de
Thu Nov 6 14:33:59 EST 2008
On Thu, 2008-11-06 at 19:59 +0100, Moritz Lennert wrote:
> [...]
>
> >
> > # output
> > block_id\_tmp
>
> I think this is because of the quotes:
>
> tempcolumn="$tempcolumn""\_tmp"
>
> But actually, trying out your entire original script, I don't see
> where
> the problem is. The attached version seems to work perfectly for me
> (just slightly simplified from your original version):
>
> What exactly did not work when you tried this ?
>
> Moritz
Moritz,
thank you for your time.
1. I *corrected* the double quotes and re-run the script. [Script +
output attached]
2. I tried your latest script (the one you attached in the previous
message). It works but I still get those column-type-related WARNINGS.
[Script + output attached]
Kind Regards, Nikos
-------------- next part --------------
# I *corrected* the tempcolumn="$tempcolumn""\_tmp"
## Actually it didn't work in first place this is why I experimented a bit by adding the double quotes!
cat caps_2_lower_moritzx.sh -n
1 #!/bin/sh -x
2
3 key_column="cat"
4 suffix="_tmp"
5 for column in `db.columns test`; do
6 if [ "$column" != "$key_column" ]; then
7 tempcolumn=`echo $column | awk '{print tolower($1)}'`
8 tempcolumn="$tempcolumn\_tmp"
9 echo $tempcolumn
10 v.db.renamecol map=befliegung_copy column=$column,$tempcolumn
11 lower_column=`echo $tempcolumn $suffix | awk '{print
12 substr($1,1,length($1)-length($2))}'`
13 v.db.renamecol map=test layer=1 column=$tempcolumn,$lower_column
14 fi
15 done
16
17 db.columns test
# Output when running the above
sh ./caps_2_lower_moritzx.sh > caps_2_lower_moritzx2
ERROR: Column <block_id> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <AREA> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <PERIMETER> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <RAS2X2_> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <RAS2X2_ID> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <RAS2X2_NR> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <block> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <STAND> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <BEFL_DATUM> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <BEFL_JAHR> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
ERROR: Column <QUALITAET> not found in table
Sorry <_tmp> is not a valid option
Description:
Renames a column in the attribute table connected to a given vector map.
Keywords:
vector, database, attribute table
Usage:
v.db.renamecol map=name [layer=value] column=string[,string,...]
[--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
map Vector map for which to rename attribute column
layer Layer where to rename column
default: 1
column Old and new name of the column (old,new)
[Raster MASK present]
-------------- next part --------------
# Moritz's script...
cat change_case.sh -n
1 #!/bin/sh -x
2
3 key_column="cat"
4 suffix="_tmp"
5 map="test"
6 for column in `db.columns test`; do
7 if [ "$column" != "$key_column" ]; then
8 tempcolumn=$column$suffix
9 echo $tempcolumn
10 v.db.renamecol map=$map column=$column,$tempcolumn
11 lowercolumn=`echo $column | awk '{print tolower($1)}'`
12 v.db.renamecol map=$map layer=1 column=$tempcolumn,$lowercolumn
13 fi
14 done
15
16 db.columns test
# running the above works but I still get some WARNINGS... ??
sh ./change_case.sh
block_id_tmp
AREA_tmp
PERIMETER_tmp
RAS2X2__tmp
RAS2X2_ID_tmp
RAS2X2_NR_tmp
block_tmp
WARNING: SQLite driver: unable to parse decltype: CHARACTER INTEGER
WARNING: SQLite driver: unable to parse decltype: CHARACTER INTEGER
WARNING: SQLite driver: column 'block_tmp', SQLite type 1 is not supported
WARNING: SQLite driver: unable to parse decltype: CHARACTER INTEGER
WARNING: SQLite driver: unable to parse decltype: CHARACTER INTEGER
WARNING: SQLite driver: column 'block_tmp', SQLite type 1 is not supported
ERROR: Column <block_tmp> not found in table
STAND_tmp
BEFL_DATUM_tmp
BEFL_JAHR_tmp
QUALITAET_tmp
cat
block_id
area
perimeter
ras2x2_
ras2x2_id
ras2x2_nr
stand
befl_datum
befl_jahr
qualitaet
More information about the grass-user
mailing list