Exemplo n.º 1
0
        /// <summary>
        ///		Procesa una exportación de las tablas de esquema a archivos CSV
        /// </summary>
        internal bool Execute(SentenceExportCsvSchema sentence)
        {
            bool exported = false;

            // Exporta los archivos
            using (BlockLogModel block = Processor.Manager.Logger.Default.CreateBlock(LogModel.LogType.Info, $"Start exporting tables from {sentence.Source}"))
            {
                ProviderModel provider = Processor.GetProvider(sentence.Source);

                if (provider == null)
                {
                    block.Error($"Can't find the provider '{sentence.Source}'");
                }
                else
                {
                    // Supone que se ha exportado correctamente
                    exported = true;
                    // Elimina los archivos si es necesario
                    if (sentence.DeleteOldFiles)
                    {
                        DeletePathFiles(block, Processor.Manager.Step.Project.GetFullFileName(sentence.Path));
                    }
                    // Exporta las tablas del esquema (mientras no haya errores
                    foreach (SentenceExportCsv sentenceCsv in GetExportFileSentences(block, provider, sentence))
                    {
                        if (exported)
                        {
                            exported = new ExportCsvManager(Processor).Execute(sentenceCsv);
                        }
                    }
                }
            }
            // Devuelve el valor que indica si se ha exportado
            return(exported);
        }
Exemplo n.º 2
0
        /// <summary>
        ///		Crea una sentencia de exportación a CSV con los datos de la tabla
        /// </summary>
        private SentenceExportCsv CreateSentence(SentenceExportCsvSchema sentence, TableDbModel table)
        {
            SentenceExportCsv exportSentence = new SentenceExportCsv();

            // Asigna las propiedades
            exportSentence.Source    = sentence.Source;
            exportSentence.FileName  = table.Name + ".csv";
            exportSentence.Command   = GetSelect(table);
            exportSentence.BatchSize = sentence.BatchSize;
            exportSentence.Timeout   = sentence.Timeout;
            // Asigna los parámetros de archivo
            exportSentence.Definition = sentence.Definition;
            // Devuelve la sentencia de exportación
            return(exportSentence);
        }
Exemplo n.º 3
0
        /// <summary>
        ///		Carga una sentencia <see cref="SentenceExportCsvSchema"/>
        /// </summary>
        private SentenceBase LoadSentenceExportSchema(MLNode rootML)
        {
            SentenceExportCsvSchema sentence = new SentenceExportCsvSchema();

            // Asigna las propiedades básicas
            sentence.Source         = rootML.Attributes[TagSource].Value;
            sentence.Path           = rootML.Attributes[TagPath].Value;
            sentence.DeleteOldFiles = rootML.Attributes[TagDeleteOldFiles].Value.GetBool();
            sentence.BatchSize      = rootML.Attributes[TagBatchSize].Value.GetInt(BatchSizeDefault);
            sentence.Timeout        = GetTimeout(rootML, TimeSpan.FromHours(2));
            // Carga los parámetros del CSV
            LoadDefinitionCsv(sentence.Definition, rootML);
            // Carga las tablas exluidas
            sentence.ExcludeRules.AddRange(LoadExcludeRules(rootML));
            // Devuelve la sentencia
            return(sentence);
        }
Exemplo n.º 4
0
        /// <summary>
        ///		Obtiene los comandos para exportación de los archivos asociados a las tablas
        /// </summary>
        private List <SentenceExportCsv> GetExportFileSentences(BlockLogModel block, ProviderModel provider, SentenceExportCsvSchema sentence)
        {
            List <SentenceExportCsv> sentences = new List <SentenceExportCsv>();

            // Obtiene las sentencias
            foreach (TableDbModel table in provider.LoadSchema().Tables)
            {
                if (sentence.ExcludeRules.CheckMustExclude(table.Name))
                {
                    block.Info($"Skip table {table.Name} because is excluded");
                }
                else
                {
                    sentences.Add(CreateSentence(sentence, table));
                }
            }
            // Devuelve la colección de instrucciones
            return(sentences);
        }