[GRASS-user] after performing join all character fields are
trunctated to 1
Jón Eiríksson
jeir at hi.is
Sat Mar 31 06:09:58 EDT 2012
Well, the join2 solved the data length problem and worked for me while I
was using MySQL, but I currently use SQLite as I find it less cumbersome
to set up and manage.
Regards, Jon
> body p { margin-bottom: 0cm; margin-top: 0pt; } On
> 03/30/2012 07:34 PM, Jon Eiriksson wrote: I recall
> a similar problem with MySQL, and that Micha Silver produced
> a join2 script that did not truncate (maybe it can be found
> in the mail archives?), - this improved script has,
> apparently, not made it into the most recent releases. SQLite
> manages with the current join, at least on my Mac.
> Issue opened on trac:
> http://trac.osgeo.org/grass/ticket/1631
> I'm looking forward to feedback...
>
> The problem does not occur with sqlite because it's very lax in data
> types. Sqlite ignores all the length restrictions to data types,
> and somehow dynamically allocates as much space is needed for
> each data field. So a column of type CHARACTER is the same as
> TEXT and the same as VARCHAR(8), or VARCHAR(255) etc.
>
> Regards,
> Micha
>
>
> Jon On 30.3.2012, at 09:46, Micha Silver wrote:
> On 03/28/2012 10:38 PM, Jennifer Boehnert wrote:
> Thank you Micha for the quick response. When I
> perform this join through the GUI on Windows I get the
> following error ERROR: value too long for type character (1)
> Hi Jennifer: Ahhh, I remember something
> about a bug in the v.db.join script. The script first gets a
> list of columns from the join table, then loops thru that
> list, creates a new column in the target table, and runs an
> UPDATE to get all the values from the join table into the
> target. The trouble comes with columns of type CHARACTER -
> the script does not check the length of the field, so by
> default (in Postgresql) it creates a field of length 1.
> Here's from the PostgreSQL manual: The
> notationsvarchar(n)andchar(n)are aliases forcharacter
> varying(n)andcharacter(n), respectively.characterwithout
> length specifier is equivalent tocharacter(1). Ifcharacter
> varyingis used without length specifier, the type accepts
> strings of any size. The latter is aPostgreSQLextension.
> Since the script uses the column definition "CHARACTER" and
> not "CHARACTER VARYING" the default length is 1. Here's a
> way to work around the problem. Let's Suppose you have a
> target vector called 'vect', and the join table called
> 'otable', your text column is 'long_text', and the id columns
> for the join are 'cat' and 'oid', then # first drop the
> wrong (length 1) text column v.db.dropcol vect col=long_text
> # Now recreate that column correctly v.db.addcol vect
> col="long_text varchar(255)" # And finally the update echo
> "UPDATE vect SET long_text=(SELECT long_text FROM otable
> WHERE otable.oid=vect.cat);" | db.execute database=
> driver=pg That's a one time fix. In order to get this
> working correctly permanently, changes are required to the
> v.db.join script. I'll suggest this to the devs. Regards,
> Micha and all my added fields which are
> of data type character have a length of 1 instead of the
> original 255. Any ideas what is going on? I am using
> postgreSQL 9.1 and GRASS 6.4.2 on Windows. Thanks Jennifer
> On 3/28/2012 12:56 PM, Micha Silver wrote:
> On 03/28/2012 08:49 PM, Jennifer Boehnert wrote:
> Hello, I have performed a join between a
> vector map and a postgreSQL table using v.db.join. I would
> like to remove this join now. I cannot figure out how to do
> this. I think you can just drop
> the additional columns with v.db.dropcol.
> Thank you Jennifer
> _______________________________________________ grass-user
> mailing list grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user This mail
> was received via Mail-SeCure System.
> -- Micha Silver GIS Consultant, Arava Development Co.
> http://www.surfaces.co.il
> -- Micha Silver GIS Consultant, Arava Development
> Co. http://www.surfaces.co.il
> _______________________________________________ grass-user
> mailing list grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
> This mail was received via Mail-SeCure System.
>
>
> -- Micha Silver GIS Consultant, Arava Development Co.
> http://www.surfaces.co.il
More information about the grass-user
mailing list