/// <summary> /// Append the SQL commands needed to copy a table from a source database to /// the target database. /// </summary> /// <param name="sb">The string builder object</param> /// <param name="stmt">The CREATE TABLE schema object</param> /// <param name="srcSchema">The source schema from which the table is copied</param> private static void CopyTable(StringBuilder sb, SQLiteDdlStatement stmt, Dictionary <SchemaObject, Dictionary <string, SQLiteDdlStatement> > srcSchema) { string tableName = stmt.ObjectName.ToString(); // The table (and any associated triggers and/or indexes) does not exist in the // right database, so we need to create it from scratch. string create = stmt.ToString(); sb.Append("\r\n" + create + ";\r\n"); // Create any associated indexes Dictionary <string, SQLiteDdlStatement> indexes = srcSchema[SchemaObject.Index]; foreach (SQLiteCreateIndexStatement cindex in indexes.Values) { if (SQLiteParser.Utils.Chop(cindex.OnTable).ToLower() == SQLiteParser.Utils.Chop(tableName).ToLower()) { sb.Append(cindex.ToString() + ";\r\n"); } } // foreach // Now add CREATE for any triggers of this table Dictionary <string, SQLiteDdlStatement> triggers = srcSchema[SchemaObject.Trigger]; foreach (SQLiteCreateTriggerStatement ctrig in triggers.Values) { if (SQLiteParser.Utils.Chop(ctrig.TableName.ToString()).ToLower() == SQLiteParser.Utils.Chop(tableName).ToLower()) { sb.Append(ctrig.ToString() + ";\r\n"); } } // foreach }
private static void CopyView(StringBuilder sb, SQLiteDdlStatement stmt) { sb.Append("\r\n-- Creating view " + stmt.ObjectName.ToString() + " from scratch\r\n\r\n"); sb.Append("DROP VIEW IF EXISTS " + stmt.ObjectName.ToString() + ";\r\n"); sb.Append(stmt.ToString() + ";\r\n"); }