On 06/11/08 20:33, Nikos Alexandris wrote:
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]

You still use quotes:
tempcolumn="$tempcolumn\_tmp"

IIUC, the quotes will let the slash appear literally. So, just leave out the quotes as follows:

tempcolumn=$tempcolumn\_tmp

However, as you say your original script (in my modified form) actually worked, it just spit out a series of warnings. So it might be more interesting to check upon these warnings. I only saw these with the sqlite driver, not with dbf or postgresql, so we should try to find out what happens with that driver.

Moritz


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


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

# 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]


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

# 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

_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user

Reply via email to