private void RunMigration(string localDbPath, string[] tablesToIgnoreOrAppend, string targetConnectionString, Scope scope, bool removeTempFiles) { using (var repository = new DB4Repository($"Data Source={localDbPath};Max Database Size=4000")) { var scriptRoot = Path.GetTempFileName(); var tempScript = scriptRoot + ".sqltb"; var generator = new Generator4(repository, tempScript); if (scope == Scope.DataOnlyForSqlServerIgnoreIdentity) { //Ignore all tables except the ones in tablesToAppend var tables = repository.GetAllTableNames(); var list = tables.Except(tablesToIgnoreOrAppend.ToList()); generator.ExcludeTables(list.ToList()); } else { generator.ExcludeTables(tablesToIgnoreOrAppend.ToList()); } generator.ScriptDatabaseToFile(scope); using (var serverRepository = new ServerDBRepository4(targetConnectionString)) { try { //Handles large exports also... if (File.Exists(tempScript)) // Single file { serverRepository.ExecuteSqlFile(tempScript); if (removeTempFiles) { TryDeleteFile(tempScript); } } else // possibly multiple files - tmp2BB9.tmp_0.sqlce { for (var i = 0; i < 400; i++) { var testFile = string.Format("{0}_{1}{2}", scriptRoot, i.ToString("D4"), ".sqltb"); if (File.Exists(testFile)) { serverRepository.ExecuteSqlFile(testFile); if (removeTempFiles) { TryDeleteFile(testFile); } } } } } catch (Exception ex) { CreateBlockFile(localDbPath, ex); throw; } } } }
public void TestCreateSqliteServerExport() { using (IRepository sourceRepository = new SQLiteRepository(db21Conn)) { var generator = new Generator4(sourceRepository, "C:\\temp\\script.sql"); generator.ScriptDatabaseToFile(Scope.SchemaData); var result = generator.GeneratedScript; } }
public void TestServerExport() { string path = @"C:\temp\testAW2012.sqlce"; using (IRepository sourceRepository = new ServerDBRepository4(serverAWConnectionString)) { var generator = new Generator4(sourceRepository, path); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestExportToSqlServer() { var path = @"C:\temp\testnw.sql"; using (var sourceRepository = new DB4Repository(northwindConn)) { var generator = new Generator4(sourceRepository, path); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestServerHierarchyIdSqlCe() { using (IRepository sourceRepository = new ServerDBRepository4(serverHIDConnectionString)) { var exclusions = new List <string>(); var generator = new Generator4(sourceRepository, @"C:\code\test2.sql"); generator.ExcludeTables(exclusions); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestExportToSqlServer2() { var path = @"C:\temp\testum.sql"; using (var sourceRepository = new DB4Repository(umbracoConn)) { var generator = new Generator4(sourceRepository, path, false, false, false); generator.ExcludeTables(new List <string>()); generator.ScriptDatabaseToFile(Scope.SchemaData); } }
public void TestSQLiteDateQuirk() { //cloud_service_product_infos //;DateFormatString=yyyy-MM-dd HH:mm:ss zzz using (IRepository sourceRepository = new SQLiteRepository(@"Data Source=C:\Users\erik\Downloads\spiceworks_prod.db")) { var generator = new Generator4(sourceRepository, "sw.sql"); generator.TruncateSQLiteStrings = true; generator.ScriptDatabaseToFile(Scope.DataOnly); } }
public void TestServerExportToSqlite() { var path = @"C:\temp\testAW2012.sql"; using (var sourceRepository = new ServerDBRepository4(serverDefConnectionString, true)) { var generator = new Generator4(sourceRepository, path, false, false, true); generator.ExcludeTables(new List <string>()); generator.ScriptDatabaseToFile(Scope.SchemaDataSQLite); } }
protected void btnExport_Click(object sender, EventArgs e) { var builder = new DbConnectionStringBuilder() { ConnectionString = GlobalSettings.DbDSN }; if (builder.ContainsKey("datalayer")) { var dataLayer = builder["datalayer"].ToString(); if (string.Equals(dataLayer, "SQLCE4Umbraco.SqlCEHelper,SQLCE4Umbraco", StringComparison.OrdinalIgnoreCase)) { builder.Remove("datalayer"); var sqlcePath = builder.ContainsKey("datasource") ? builder["datasource"].ToString() : builder["data source"].ToString(); // resolve the 'DataDirectory' if (builder.ConnectionString.Contains("|DataDirectory|")) { var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); if (!dataDirectory.EndsWith("\\")) { dataDirectory = string.Concat(dataDirectory, "\\"); } sqlcePath = sqlcePath.Replace("|DataDirectory|", dataDirectory); } // check if file exists if (!File.Exists(sqlcePath)) { return; // FAIL } // set-up some vars var datestamp = DateTime.UtcNow.ToString("_yyyyMMddHHmmss"); var fileInfo = new FileInfo(sqlcePath); var originalFileName = fileInfo.Name.Replace(fileInfo.Extension, string.Empty); var exportFileName = string.Concat(originalFileName, datestamp, ".sql"); var exportPath = Server.MapPath("~/App_Data/" + exportFileName); var tempPath = sqlcePath.Replace(fileInfo.Extension, string.Concat(datestamp, fileInfo.Extension)); // make a copy of the db File.Copy(sqlcePath, tempPath); // replace the conn string if (builder.ContainsKey("datasource")) { builder["datasource"] = tempPath; } else { builder["data source"] = tempPath; } // export db using (var repository = new DB4Repository(builder.ConnectionString)) { var generator = new Generator4(repository, exportPath); var scope = this.rblScope.SelectedValue.Equals("data") ? Scope.SchemaData : Scope.Schema; // save db script to file generator.ScriptDatabaseToFile(scope); } // delete the temp db File.Delete(tempPath); // get the bytes from the export script var bytes = File.ReadAllBytes(exportPath); // check if the export script should be zipped if (this.cbZip.Checked) { using (var zip = new ZipOutputStream(Response.OutputStream)) { var entry = new ZipEntry(ZipEntry.CleanName(exportFileName)); zip.PutNextEntry(entry); zip.Write(bytes, 0, bytes.Length); } // push the zip file to the browser Response.AddHeader("content-disposition", string.Concat("attachment; filename=", exportFileName, ".zip")); Response.ContentType = "application/zip"; } else { // push the export script to the browser Response.AddHeader("content-disposition", string.Concat("attachment; filename=", exportFileName)); Response.ContentType = "text/x-sql"; Response.BinaryWrite(bytes); } Response.Flush(); Response.End(); } } }
public void TestServerHierarchyIdSqlCe() { using (IRepository sourceRepository = new ServerDBRepository4(serverHIDConnectionString)) { var exclusions = new List<string>(); var generator = new Generator4(sourceRepository, @"C:\code\test2.sql"); generator.ExcludeTables(exclusions); generator.ScriptDatabaseToFile(Scope.SchemaData); } }