/// <summary> /// Exporta la tabla de datos /// </summary> private void Export() { if (DataResults == null || DataResults.Rows.Count == 0) { SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage("No hay datos para exportar"); } else { string fileName = SolutionViewModel.MainViewModel.OpenDialogSave("Query.csv", "Archivos CSV (*.csv)|*.csv|Todos los archivos (*.*)|*.*", ".csv"); if (!string.IsNullOrEmpty(fileName)) { using (LibLogger.Models.Log.BlockLogModel block = SolutionViewModel.MainViewModel.Manager.Logger.Default. CreateBlock(LibLogger.Models.Log.LogModel.LogType.Debug, $"Comienzo de grabación del archivo {fileName}")) { // Graba el archivo try { // Graba la tabla de datos en el archivo new LibCsvFiles.Controllers.CsvDataTableWriter().Save(DataResults, fileName); // Log block.Debug("Fin de grabación del archivo"); } catch (Exception exception) { block.Error($"Error al grabar el archivo {fileName}. {exception.Message}"); } // Envía el log SolutionViewModel.MainViewModel.MainController.Logger.Flush(); } } } }
/// <summary> /// Ejecuta el script /// </summary> internal async Task ExecuteScriptAsync(ConnectionModel connection, Application.Connections.Models.ArgumentListModel arguments, System.Threading.CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(Content)) { SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage("Introduzca una consulta para ejecutar"); } else if (connection == null) { SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión"); } else { using (LibLogger.Models.Log.BlockLogModel block = SolutionViewModel.MainViewModel.Manager.Logger.Default.CreateBlock(LibLogger.Models.Log.LogModel.LogType.Info, $"Comienza la ejecución de la consulta")) { string selectedText = GetEditorSelectedText(); // Ejecuta la consulta if (!string.IsNullOrEmpty(selectedText)) { await SolutionViewModel.MainViewModel.Manager.ExecuteQueryAsync(connection, selectedText, arguments, connection.TimeoutExecuteScript, cancellationToken); } else { await SolutionViewModel.MainViewModel.Manager.ExecuteQueryAsync(connection, Content, arguments, connection.TimeoutExecuteScript, cancellationToken); } // Muestra el tiempo de ejecución block.Info($"Tiempo de ejecución: {SolutionViewModel.ConnectionExecutionViewModel.ExecutionTime}"); } } }
/// <summary> /// Graba el archivo /// </summary> public void SaveDetails(bool newName) { if (DataResults == null || DataResults.Rows.Count == 0) { SolutionViewModel.MainController.HostController.SystemController.ShowMessage("No hay datos para exportar"); } else { string fileName = SolutionViewModel.MainController.DialogsController .OpenDialogSave(string.Empty, $"Archivos {ExportFilesExtensions} (*.{ExportFilesExtensions})|*.{ExportFilesExtensions}" + "|Todos los archivos (*.*)|*.*", $"New file.{ExportFilesExtensions}", $".{ExportFilesExtensions}"); if (!string.IsNullOrEmpty(fileName)) { using (LibLogger.Models.Log.BlockLogModel block = SolutionViewModel.Manager.Logger.Default. CreateBlock(LibLogger.Models.Log.LogModel.LogType.Debug, $"Comienzo de grabación del archivo {fileName}")) { // Graba el archivo try { Task.Run(() => SaveFile(block, fileName)); } catch (Exception exception) { block.Error($"Error al grabar el archivo {fileName}. {exception.Message}"); SolutionViewModel.MainController.HostController.SystemController.ShowMessage($"Error al grabar el archivo {fileName}. {exception.Message}"); } } } } }
/// <summary> /// Graba el archivo /// </summary> protected override void SaveFile(LibLogger.Models.Log.BlockLogModel block, string fileName) { LibCsvFiles.Controllers.CsvDataReaderWriter writer = new LibCsvFiles.Controllers.CsvDataReaderWriter(); // Escribe el archivo using (ParquetDataReader reader = new ParquetDataReader(FileName)) { // Log writer.Progress += (sender, args) => block.Progress(System.IO.Path.GetFileName(fileName), args.Records, args.Records + 1); // Escribe el archivo writer.Save(reader, fileName); } // Log block.Progress(System.IO.Path.GetFileName(fileName), 0, 0); block.Info($"Fin de la grabación del archivo '{fileName}'"); SolutionViewModel.MainController.Logger.Flush(); }
/// <summary> /// Graba el archivo /// </summary> protected override void SaveFile(LibLogger.Models.Log.BlockLogModel block, string fileName) { // Graba el archivo using (CsvReader reader = new CsvReader(FileName, FileParameters, FileColumns)) { using (ParquetWriter writer = new ParquetWriter(fileName)) { // Log writer.Progress += (sender, args) => block.Progress(System.IO.Path.GetFileName(fileName), args.Records, args.Records + 1); // Escribe el archivo writer.Write(reader); } } // Log block.Progress(System.IO.Path.GetFileName(fileName), 0, 0); block.Info($"Fin de la grabación del archivo '{fileName}'"); SolutionViewModel.MainController.Logger.Flush(); }
/// <summary> /// Ejecuta el script /// </summary> internal async Task ExecuteSqlScriptAsync(ConnectionModel connection, ArgumentListModel arguments, System.Threading.CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(Content)) { SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca una consulta para ejecutar"); } else if (connection == null) { SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione una conexión"); } else { using (LibLogger.Models.Log.BlockLogModel block = SolutionViewModel.Manager.Logger.Default.CreateBlock(LibLogger.Models.Log.LogModel.LogType.Info, $"Comienza la ejecución de la consulta")) { string selectedText = GetEditorSelectedText(); // Si no hay nada seleccionado, se ejecuta todo el contenido if (string.IsNullOrWhiteSpace(selectedText)) { selectedText = Content; } // Ejecuta la consulta if (FileName.EndsWith(".sql", StringComparison.CurrentCultureIgnoreCase)) { await SolutionViewModel.Manager.ExecuteQueryAsync(connection, selectedText, arguments, connection.TimeoutExecuteScript, cancellationToken); } else if (FileName.EndsWith(".sqlx", StringComparison.CurrentCultureIgnoreCase)) { await SolutionViewModel.Manager.ExecuteInterpretedQueryAsync(connection, selectedText, arguments, cancellationToken); } else { block.Error("No se reconoce el tipo de archivo como SQL"); } // Muestra el tiempo de ejecución block.Info($"Tiempo de ejecución: {SolutionViewModel.ConnectionExecutionViewModel.ExecutionTime}"); } } }
/// <summary> /// Graba el archivo /// </summary> protected override void SaveFile(LibLogger.Models.Log.BlockLogModel block, string fileName) { ExcelDataTableReader excelReader = new ExcelDataTableReader(); long rows = excelReader.CountRows(FileName, 1, true); // Graba el archivo using (IDataReader reader = excelReader.LoadFile(FileName, 1, 0, rows, true).CreateDataReader()) { using (ParquetWriter writer = new ParquetWriter(fileName)) { // Log writer.Progress += (sender, args) => block.Progress(System.IO.Path.GetFileName(fileName), args.Records, args.Records + 1); // Escribe el archivo writer.Write(reader); } } // Log block.Progress(System.IO.Path.GetFileName(fileName), 0, 0); block.Info($"Fin de la grabación del archivo '{fileName}'"); SolutionViewModel.MainController.Logger.Flush(); }
/// <summary> /// Graba el archivo /// </summary> protected abstract void SaveFile(LibLogger.Models.Log.BlockLogModel block, string fileName);