internal void Export(List <string> tablesToExport, List <string> exportedViews, SQLiteBackup manager) { if (_isProcessed || manager.stopProcess || _createTriggerSQL.Trim().Length == 0) { return; } foreach (var dependantTable in _tableDependancies) { // skip trigers that are dependant on skiped tables if (!tablesToExport.Contains(dependantTable)) { return; } } foreach (var dependantView in _viewsDependancies) { // skip trigers that are dependant on skiped views if (!exportedViews.Contains(dependantView)) { return; } } manager.Export_WriteLine(string.Format("DROP TRIGGER IF EXISTS `{0}`;", _name)); manager.Export_WriteLine(_createTriggerSQL); manager.textWriter.WriteLine(); _isProcessed = true; }
void Export_RowsData_OnDuplicateKeyUpdate(SQLiteBackup manager) { bool allPrimaryField = true; foreach (var col in Columns) { if (!col.IsPrimaryKey) { allPrimaryField = false; break; } } manager.Command.CommandText = string.Format("SELECT * FROM `{0}`;", _name); SQLiteDataReader rdr = manager.Command.ExecuteReader(); _insertStatementHeader = string.Empty; while (rdr.Read()) { if (manager.stopProcess) { return; } if (_insertStatementHeader == string.Empty) { if (allPrimaryField) { _insertStatementHeader = Export_GetInsertStatementHeader(RowsDataExportMode.InsertIgnore, rdr); } else { _insertStatementHeader = Export_GetInsertStatementHeader(RowsDataExportMode.Insert, rdr); } } StringBuilder sb = new StringBuilder(); sb.Append(_insertStatementHeader); sb.Append(Export_GetValueString(rdr)); if (!allPrimaryField) { sb.Append(" ON CONFLICT DO UPDATE SET "); Export_GetUpdateString(rdr, sb); } sb.Append(";"); manager.Export_WriteLine(sb.ToString()); manager.textWriter.Flush(); } rdr.Close(); }
internal void Export(List <string> tablesToExport, SQLiteBackup manager) { if (manager.stopProcess || tablesToExport.Count < 1 || !tablesToExport.Contains(_tableName.Trim().ToLower())) { return; } manager.Export_WriteLine(_createIndexSQL); manager.textWriter.WriteLine(); }
internal void Export(List <string> tablesToExport, SQLiteBackup manager) { if (manager.stopProcess || tablesToExport.Count < 1 || !tablesToExport.Contains(_tableName.Trim().ToLower())) { return; } manager.Export_WriteLine(string.Format("INSERT INTO \"sqlite_sequence\" VALUES('{0}', {1});", _tableName, _value.ToString())); manager.textWriter.WriteLine(); }
internal void Export(List <string> tablesToExport, SQLiteViewList allViews, SQLiteBackup manager, List <string> exportedViews) { if (_isProcessed || manager.stopProcess) { return; } foreach (var dependantTable in _tableDependancies) { // skip views that are dependant on skiped tables if (!tablesToExport.Contains(dependantTable)) { return; } } foreach (var dependantView in _viewDependancies) { allViews[dependantView].Export(tablesToExport, allViews, manager, exportedViews); } _isProcessed = true; if (_createViewSQL.Trim().Length == 0) { return; } manager.Export_WriteLine(string.Format("DROP TABLE IF EXISTS `{0}`;", _name)); manager.Export_WriteLine(string.Format("DROP VIEW IF EXISTS `{0}`;", _name)); manager.Export_WriteLine(_createViewSQL); manager.textWriter.WriteLine(); exportedViews.Add(_name); }
internal void Export(List <string> tablesToExport, SQLiteTableList allTables, SQLiteBackup manager) { if (_isProcessed || manager.stopProcess || !tablesToExport.Contains(_name.Trim().ToLower())) { return; } if (manager.ExportInfo.ExportTableStructure) { if (_dependancies.Count > 0) { foreach (var dependantTable in _dependancies) { if (!tablesToExport.Contains(dependantTable)) { throw new Exception(string.Format("Table \"{0}\" depends on table \"{1}\" via foreign key. However the latter is not included within exported table list.", _name, dependantTable)); } } foreach (var dependantTable in _dependancies) { allTables[dependantTable].Export(tablesToExport, allTables, manager); } } manager._currentTableName = _name; manager._currentTableIndex = allTables.IndexOf(this); manager._totalRowsInCurrentTable = _totalRows; manager.Export_WriteComment(""); manager.Export_WriteComment(string.Format("Definition of {0}", _name)); manager.Export_WriteComment(""); manager.textWriter.WriteLine(); manager.Export_WriteLine(string.Format("DROP TABLE IF EXISTS `{0}`;", _name)); manager.Export_WriteLine(_createTableSql); manager.textWriter.WriteLine(); manager.textWriter.Flush(); } if (manager.ExportInfo.ExportRows) { manager.Export_WriteComment(""); manager.Export_WriteComment(string.Format("Dumping data for table {0}", _name)); manager.Export_WriteComment(""); manager.textWriter.WriteLine(); manager._currentRowIndexInCurrentTable = 0L; if (manager.ExportInfo.RowsExportMode == RowsDataExportMode.Insert || manager.ExportInfo.RowsExportMode == RowsDataExportMode.InsertIgnore || manager.ExportInfo.RowsExportMode == RowsDataExportMode.Replace) { Export_RowsData_Insert_Ignore_Replace(manager); } else if (manager.ExportInfo.RowsExportMode == RowsDataExportMode.OnDuplicateKeyUpdate) { Export_RowsData_OnDuplicateKeyUpdate(manager); } else if (manager.ExportInfo.RowsExportMode == RowsDataExportMode.Update) { Export_RowsData_Update(manager); } manager.textWriter.WriteLine(); manager.textWriter.Flush(); } _isProcessed = true; }
void Export_RowsData_Update(SQLiteBackup manager) { bool allPrimaryField = true; foreach (var col in Columns) { if (!col.IsPrimaryKey) { allPrimaryField = false; break; } } if (allPrimaryField) { return; } bool allNonPrimaryField = true; foreach (var col in Columns) { if (col.IsPrimaryKey) { allNonPrimaryField = false; break; } } if (allNonPrimaryField) { return; } manager.Command.CommandText = string.Format("SELECT * FROM `{0}`;", _name); SQLiteDataReader rdr = manager.Command.ExecuteReader(); while (rdr.Read()) { if (manager.stopProcess) { return; } StringBuilder sb = new StringBuilder(); sb.Append("UPDATE `"); sb.Append(_name); sb.Append("` SET "); Export_GetUpdateString(rdr, sb); sb.Append(" WHERE "); Export_GetConditionString(rdr, sb); sb.Append(";"); manager.Export_WriteLine(sb.ToString()); manager.textWriter.Flush(); } rdr.Close(); }
void Export_RowsData_Insert_Ignore_Replace(SQLiteBackup manager) { manager.Command.CommandText = string.Format("SELECT * FROM `{0}`;", _name); SQLiteDataReader rdr = manager.Command.ExecuteReader(); var sb = new StringBuilder((int)manager.ExportInfo.MaxSqlLength); manager._currentRowIndexInCurrentTable = 0; _insertStatementHeader = string.Empty; while (rdr.Read()) { if (manager.stopProcess) { return; } manager._currentRowIndexInAllTable += 1; manager._currentRowIndexInCurrentTable += 1; if (_insertStatementHeader == string.Empty) { _insertStatementHeader = Export_GetInsertStatementHeader( manager.ExportInfo.RowsExportMode, rdr); } string sqlDataRow = Export_GetValueString(rdr); if (sb.Length == 0) { sb.AppendLine(_insertStatementHeader); sb.Append(sqlDataRow); } else if ((long)sb.Length + (long)sqlDataRow.Length < manager.ExportInfo.MaxSqlLength) { sb.AppendLine(","); sb.Append(sqlDataRow); } else { sb.Append(";"); manager.Export_WriteLine(sb.ToString()); manager.textWriter.Flush(); sb = new StringBuilder((int)manager.ExportInfo.MaxSqlLength); sb.AppendLine(_insertStatementHeader); sb.Append(sqlDataRow); } } rdr.Close(); if (sb.Length > 0) { sb.Append(";"); } manager.Export_WriteLine(sb.ToString()); manager.textWriter.Flush(); sb = null; }