Update an SXV4
You can use the Update All and Update options to update an existing target SXV4 database that has been previously built and saved.
For example, new monthly sales data or survey data can be added to existing databases without rebuilding the entire database. This can greatly reduce the time required for channelling.
Overview of the Update Process
When you initiate an update, SuperCHANNEL will check all the records in the source database against the existing records in the target database.
- If there are new records in the source, SuperCHANNEL will append these to the target database.
- If there are updated records in the source, SuperCHANNEL will update the corresponding records in the target.
- If there are records in the target that no longer exist in the source, these will be unchanged.
Running an update will not change the structure of the target database. If you need to add new fact table columns (fields) to the target database then you will need to rebuild the database from scratch instead.
Preparing the Source Data for Update
Because SuperCHANNEL checks every record in the source against the current target database, it is important to prepare the source data before you run an update. You should restrict the contents of the source database so that it only contains the new and changed records (for example, you might do this using views).
If you do not do this, then the update will be significantly slower than rebuilding the SXV4 from scratch.
If the SXV4 you are updating was created prior to version 8.0 of SuperCHANNEL, and it contains non English/ASCII characters, then you may need to change the system locale in order to update it. See Unicode for more information. You may want to consider rebuilding the SXV4 from scratch instead as this will avoid the need to set the system locale when using it with SuperSERVER.
Update an Existing Database
To perform an update you need to open a saved project file where the target database already exists. SuperCHANNEL will open the project in "update mode", with all the existing tables and columns in the target database greyed out.
You can then select the fact table you want to update and click Update:
You are strongly recommended to use the Update option to update the fact tables individually, rather than Update All (which updates all the fact and classification tables in the target). If you need to update all the tables, consider rebuilding the database instead as this will be more efficient.
Uniqueness Violation
When you perform an update, you may notice error messages similar to the following in the SuperCHANNEL logs:
Operation failed at source row 3
str.database.DatabaseException: PreparedSQLStatementImp.executeUpdate error
Cause:
java.sql.SQLException: Row insertion causes uniqueness violation in R_TAC row 269195 of table "F_Customer".
SQLState: 23000
This message is generated whenever the source database contains a record that is already in the target database (for example because you are updating an existing record with new data, or because the source database simply contains a record that is already in the target). The message is informational rather than a true processing error.
Notes about the Effect of Updating an SXV4
When you update an SXV4, the new records are always appended to the end of the database tables. It is not possible to change the ordering of the tables in the SXV4 without rebuilding from scratch.
This has different implications for fact and classification tables:
Fact Tables | If the original database has ordered records (either based on primary key or foreign key constraints) then the ordering may no longer be intact following an update. This may have a performance impact on cross tabulation. |
---|---|
Classification Tables | Any new values added to classification tables will be displayed at the end of the list of values in the field lists in the clients. |
In addition to updating an SXV4 using the SuperCHANNEL GUI, you can also update using SNU on the command line. See Command Line Options for more details.