Beispiel #1
0
        public async Task ProcessAsync(CancellationToken cancellationToken)
        {
            bool tableExists = DatabaseCommander.ExecuteScalar <int>($"SELECT COUNT(1) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{Settings.SchemaName}' AND TABLE_NAME = '{Settings.TableName}'") > 0;

            if (tableExists)
            {
                throw new Exception($"Table {Settings.TableNameQualified} already exists");
            }

            DataTable dataTable = _delimitedFileHandler.GetFileAsDataTable(Settings.FilePath);

            PrependPrimaryKeyIfNeeded(dataTable);

            AppendAuditFieldsIfNeeded(dataTable);

            SetColumnsToCreate(dataTable);

            CreateTable();

            await DatabaseCommander.BuildCommand()
            .ForBulkCopy()
            .Into(Settings.TableNameQualified)
            .From(dataTable)
            .Mapping(mapping => mapping.UseAutoMap())
            .ExecuteAsync(cancellationToken);
        }
        public async Task ProcessAsync(CancellationToken cancellationToken)
        {
            //await DatabaseCommander.ExecuteNonQueryAsync($"DELETE FROM {Settings.TableNameQualified}", cancellationToken);

            DataTable dataTable = _delimitedFileHandler.GetFileAsDataTable(Settings.FilePath, '~');

            await DatabaseCommander.BuildCommand()
            .ForBulkCopy()
            .Into(Settings.TableNameQualified)
            .From(dataTable)
            .Mapping(mapping => mapping.UseAutoMap())
            .ExecuteAsync(cancellationToken);

            StoredProcedureResult result = await DatabaseCommander.BuildCommand()
                                           .ForStoredProcedure("[dbo].[LoadData]")
                                           .AddInputParameter("DataFile", Settings.FilePath)
                                           .ExecuteAsync(cancellationToken);

            if (result.GetReturnParameter <string>() == "-1")
            {
                throw new Exception("[dbo].[LoadData] encountered error");
            }
        }