Пример #1
0
        public TableWriter(IShellContext context, IConnectionProvider connection, NameWithSchema name, TableInfo inputRowFormat, CopyTableTargetOptions options, TableInfo destinationTableOverride = null, LinkedDatabaseInfo linkedInfo = null, DataFormatSettings sourceDataFormat = null)
        {
            _connectionProvider = connection;
            _linkedInfo         = linkedInfo;
            _name           = name;
            _inputRowFormat = inputRowFormat;
            _queue          = new CdlDataQueue(inputRowFormat);
            _context        = context;

            _inserter = connection.Factory.CreateBulkInserter();
            _inserter.SourceDataFormat = sourceDataFormat;
            _connection          = _connectionProvider.Connect();
            _inserter.Connection = _connection;
            _inserter.Factory    = connection.Factory;
            _inserter.LinkedInfo = _linkedInfo;
            var db = context.GetDatabaseStructure(connection.ProviderString);

            _inserter.DestinationTable = destinationTableOverride ?? db.FindTableLike(_name.Schema, _name.Name);
            _inserter.CopyOptions      = options;
            _inserter.MessageLogger    = _context;
            _inserter.ServiceProvider  = context.ServiceProvider;

            _thread = new Thread(Run);
            _thread.Start();
        }
Пример #2
0
        void DoWrite(IDataQueue queue)
        {
            TableStructure ts;

            if (m_create_table)
            {
                ts          = new TableStructure(queue.GetRowFormat);
                ts.FullName = new NameWithSchema(m_schema, m_tblname);
                m_conn.SystemConnection.SafeChangeDatabase(m_dbname);
                m_conn.RunScript(dmp =>
                {
                    dmp.CreateTable(ts);
                });
            }
            else
            {
                ts = new TableStructure(DoGetRowFormat());
            }

            IBulkInserter inserter = m_conn.Dialect.CreateBulkInserter();

            inserter.Connection       = m_conn;
            inserter.CopyOptions      = CopyOptions.Clone();
            inserter.DatabaseName     = m_dbname;
            inserter.DestinationTable = ts;
            inserter.ProgressInfo     = ProgressInfo;
            inserter.Run(queue);
        }
Пример #3
0
        public TableWriter(IShellContext context, IConnectionProvider connection, NameWithSchema name, TableInfo inputRowFormat, CopyTableTargetOptions options, TableInfo destinationTableOverride = null, LinkedDatabaseInfo linkedInfo = null, DataFormatSettings sourceDataFormat = null)
        {
            _connectionProvider = connection;
            _linkedInfo = linkedInfo;
            _name = name;
            _inputRowFormat = inputRowFormat;
            _queue = new CdlDataQueue(inputRowFormat);
            _context = context;

            _inserter = connection.Factory.CreateBulkInserter();
            _inserter.SourceDataFormat = sourceDataFormat;
            _connection = _connectionProvider.Connect();
            _inserter.Connection = _connection;
            _inserter.Factory = connection.Factory;
            _inserter.LinkedInfo = _linkedInfo;
            var db = context.GetDatabaseStructure(connection.ProviderString);
            _inserter.DestinationTable = destinationTableOverride ?? db.FindTableLike(_name.Schema, _name.Name);
            _inserter.CopyOptions = options;
            _inserter.Log += _inserter_Log;

            _thread = new Thread(Run);
            _thread.Start();
        }