FrmDatabase.btnExportData_Click >DatabaseBL.Database_ExportData (Permitir exportar datos de tablas seleccionadas, si no se selecciona ninguna se comporta como antes exportando todas)

This commit is contained in:
Moises Cavero Bermudez
2021-05-14 13:09:35 +02:00
parent c789cfd3d4
commit f4da53e38c
2 changed files with 26 additions and 5 deletions

View File

@@ -65,7 +65,7 @@ namespace VAR.DatabaseExplorer.Code.BusinessLogic
txtWriter.WriteLine("</body></html>"); txtWriter.WriteLine("</body></html>");
} }
public static void Database_ExportData(TextWriter txtWriter, string connectionString, Database database) public static void Database_ExportData(TextWriter txtWriter, string connectionString, Database database, List<Table> tablesToExportData)
{ {
const int OneMegaByte = 1 * 1024 * 1024; const int OneMegaByte = 1 * 1024 * 1024;
const int MaxSizePerBatch = OneMegaByte; const int MaxSizePerBatch = OneMegaByte;
@@ -75,9 +75,18 @@ namespace VAR.DatabaseExplorer.Code.BusinessLogic
txtWriter.WriteLine("SET NOCOUNT ON;"); txtWriter.WriteLine("SET NOCOUNT ON;");
txtWriter.WriteLine(string.Empty); txtWriter.WriteLine(string.Empty);
List<Table> tables = database.Tables;
if (tablesToExportData.Any())
{
tables = tables.Where(t =>
tablesToExportData.Select(tted => tted.Schema).Contains(t.Schema) &&
tablesToExportData.Select(tted => tted.Name).Contains(t.Name) &&
tablesToExportData.Select(tted => tted.Type).Contains(t.Type)).ToList();
}
// Desactivar todas las FKs // Desactivar todas las FKs
txtWriter.WriteLine("-- Disable all constraints"); txtWriter.WriteLine("-- Disable all constraints");
foreach (Table table in database.Tables) foreach (Table table in tables)
{ {
if (table.Type != "BASE TABLE") { continue; } if (table.Type != "BASE TABLE") { continue; }
@@ -90,7 +99,7 @@ namespace VAR.DatabaseExplorer.Code.BusinessLogic
// Prepara información a exportar // Prepara información a exportar
long batchLength = 0; long batchLength = 0;
long fileLength = 0; long fileLength = 0;
foreach (Table table in database.Tables) foreach (Table table in tables)
{ {
TableBL.Table_ExportData(table, txtWriter, connectionString, (lenght, onSplit) => TableBL.Table_ExportData(table, txtWriter, connectionString, (lenght, onSplit) =>
{ {
@@ -118,7 +127,7 @@ namespace VAR.DatabaseExplorer.Code.BusinessLogic
// Activar todas las FKs // Activar todas las FKs
txtWriter.WriteLine("-- Enable all constraints"); txtWriter.WriteLine("-- Enable all constraints");
foreach (Table table in database.Tables) foreach (Table table in tables)
{ {
if (table.Type != "BASE TABLE") { continue; } if (table.Type != "BASE TABLE") { continue; }

View File

@@ -116,10 +116,22 @@ namespace VAR.DatabaseExplorer.UI
{ {
Parent.Enabled = false; Parent.Enabled = false;
List<Table> tablesToExportData = new List<Table>();
foreach (ListViewItem checkedItem in lsvTablas.CheckedItems)
{
Table tableToExportData = new Table()
{
Schema = checkedItem.SubItems[0].Text.ToString(), //Schema
Name = checkedItem.SubItems[1].Text.ToString(), //Name
Type = checkedItem.SubItems[2].Text.ToString(), //Type
};
tablesToExportData.Add(tableToExportData);
}
Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillTableDefinitions: true); Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillTableDefinitions: true);
string fixedDatabaseName = database.Name.Replace(' ', '_'); string fixedDatabaseName = database.Name.Replace(' ', '_');
var streamWriter = new SplittingStreamWriter("05." + fixedDatabaseName + ".{0:000}.Data.sql"); var streamWriter = new SplittingStreamWriter("05." + fixedDatabaseName + ".{0:000}.Data.sql");
DatabaseBL.Database_ExportData(streamWriter, _connectionString, database); DatabaseBL.Database_ExportData(streamWriter, _connectionString, database, tablesToExportData);
streamWriter.Close(); streamWriter.Close();
Parent.Enabled = true; Parent.Enabled = true;