IMSMA3 script changes 6.0
Importing data to PostGreSQL
If you have imported data to temporary tables, you need to double-check how your data looks like after import to PostGreSQL. There are changes in date format and boolean compared to MySQL.
Configuration files
Compared to IMSMANG 5.08.04 these rows are changed:
- MIGRATION_FROM_TYPE=6.0
- MIGRATION_TO_TYPE=6.0
- IMSMA_6.0_JDBC_URL=jdbc:postgresql://localhost:5432/imsma
- IMSMA_6.0_Driver=org.postgresql.Driver
- IMSMA_6.0_User=imsma
- IMSMA_6.0_Password=password
Scripts
SQL syntax
| It is strongly recommended to copy all SQL statements to a SQL tool like PGadminIII or NaviCat and test them before running the script in IMSMANG 6.0 |
Due to PostGreSQL is case sensitive you need to adopt SQL statements by adding " around column names that contains capital case and because of the " you also need to add \ (escape character).
5.08.04 example
SELECT Loc_VillageGUID, mMREID FROM loc_link_mre WHERE loc_link_mre.Loc_VillageGUID IS NOT NULL
needs to be changed to
SELECT \"Loc_VillageGUID\", \"mMREID\" FROM loc_link_mre WHERE \"Loc_VillageGUID\" IS NOT NULL
In PostGreSQL there are other reserved word than in MySQL. In your SQL tool you will see them marked with blue text.

How it looks like in SQL tool before correction

How it looks like in SQL tool after correction

How it looks like in integrated into the script with escape characters
Data type Byte
In PostGreSQL the data type Byte has been replaced with Boolean. You find all places you need to change by searching for Byte. 5.08.04 example
Attribute.SetByte("IsActive"), Cast.Byte("1");
needs to be changed to
Attribute.SetBoolean("Active"), Cast.Boolean("true");
Geodata
The column userenteredcoord has been split up in 3 columns
- user_entered_x
- user_entered_y
- user_entered_mgrs
Search for UserEnteredCoord and replace the 5.08.04 syntax with: Attribute.SetString("UserEnteredX", Row.GetString("Longitude")); Attribute.SetString("UserEnteredY", Row.GetString("Latitude")); Attribute.SetString("UserEnteredMGRS", Row.GetString("MGRS"));
You also need to verify that the following fields get correct values:
- CoordRefSys
- CoordRefFormat
- UserInputFormat