Never mind figured it out, at least for now.

1 Read the modified tables from an XML file and created source Model
2 Created a clean Model that is devoid of tables
3 Read a live database and created a target Model
4 Walk through each table in the source model and try to find in target
Model
5 if table from source model is found in target model then i add it to the
clean Model
6 if table from source model is not found in target model i do nothing
7 when each table in the source model is reviewed, i perform an
alterdatabase using the clean and source models
8 parse the resulting ddls from the alterdatabase and execute in a batch

thanks,
Robk


robk99 wrote:
> 
> Still having issues.  When executing alterTables after adding the column
> to the table it is trying to recreate other existing tables in the target
> database.
> 
> The following is code I wrote that compares columns of two tables that
> both exist in two different databases, sourceDatabase (contains only 1
> table) vs targetDatabase (contains over 600 tables).  If a column does not
> exit in the table of the target database table that exists in the source
> database table then it is added to the table.
> 
> void updateTables(Database targetDatabase, Database sourceDatabase, String
> table) throws Exception
>       {
>                       Platform platform =
> PlatformFactory.createNewPlatformInstance("oracle");
> 
> 
>                       //                      find table source table in 
> sourceDatabae                                
>                       Table sourceTable = 
> sourceDatabase.findTable(table,false);                      
>                       int numCols = sourceTable.getColumnCount();             
>                                 
>                       
>                       //                      find table in targetDatabase
>                       Table targetTable = 
> targetDatabase.findTable(table,false);
> 
>                       //compare source to target (Looks for only additions 
> does not delete
> columns)
>                       for (int i=0; i<numCols; i++){
>                               Column sourceColumn =sourceTable.getColumn(i);
>                               Column targetColumn = 
> targetTable.findColumn(sourceColumn.getName());
>                               if (targetColumn == null){
>                                       System.out.println("adding column");    
>                                 
>                                       targetTable.addColumn(sourceColumn);    
>                                 
>                                       System.out.println("added column");
>                               }
>                       }
>                       
>                       
> platform.alterTables(conn,null,"schematoupdate",null,targetDatabase,
> false);                       
>                       conn.setAutoCommit(true);
> 
> }
> 
> Any ideas?
> Thanks
> Rob
> 
> 
> 
> Thomas Dudziak wrote:
>> 
>> On 9/23/07, robk99 <[EMAIL PROTECTED]> wrote:
>> 
>>> Is there a method using the API to modify an existing table by adding a
>>> column to it without deleting the original table and then recreating the
>>> table with the new column?
>> 
>> That's pretty much what DdlUtils is made for. It involves basically three
>> steps:
>> 
>> * Read the database model from either the live database (via the
>> readModelFromDatabase method in the Platform instance that you'll get
>> from the PlatformFactory) or an XML file (via the DatabaseIO class).
>> 
>> * Change the mode which is basically a bunch of objects representing
>> tables, columns, foreign keys etc. E.g. in your case, find the table
>> in question and simply add a column to it.
>> 
>> * Write the database model to an XML file (again via the DatabaseIO
>> class) or to the live database (using the alterTables method in the
>> Platform).
>> 
>> You could also use a variations of the above to get SQL for the
>> alteration that you then could execute manually.
>> 
>> Tom
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Adding-a-new-column-in-an-existing-table-using-the-API-tf4505049.html#a12973274
Sent from the Apache DdlUtils - User mailing list archive at Nabble.com.

Reply via email to