Пример #1
3
        public override void WriteToServer(string destinationTableName, DataTable table,
            int batchSize = 0, params BulkCopyColumnMapping[] columnMappings)
        {
            OracleBulkCopy bulkCopy = null;
            try
            {
                if (DbTransaction != null)
                {
                    bulkCopy = new OracleBulkCopy((OracleConnection)DbTransaction.Connection, OracleBulkCopyOptions.Default);
                }
                else
                {
                    bulkCopy = new OracleBulkCopy(_connectionString);
                }

                bulkCopy.DestinationTableName = destinationTableName;
                if (batchSize != 0)
                {
                    bulkCopy.BatchSize = batchSize;
                }
                if (BulkCopyTimeout != (int)CommandTimeoutValue.None)
                {
                    bulkCopy.BulkCopyTimeout = BulkCopyTimeout;
                }
                if (columnMappings != null)
                {
                    foreach (var item in columnMappings)
                    {
                        var mapping = new OracleBulkCopyColumnMapping();

                        if (item.DestinationColumn != null)
                            mapping.DestinationColumn = item.DestinationColumn;
                        if (item.DestinationOrdinal != -1)
                            mapping.DestinationOrdinal = item.DestinationOrdinal;
                        if (item.SourceColumn != null)
                            mapping.SourceColumn = item.SourceColumn;
                        if (item.SourceOrdinal != -1)
                            mapping.SourceOrdinal = item.SourceOrdinal;

                        bulkCopy.ColumnMappings.Add(mapping);
                    }
                }
                bulkCopy.WriteToServer(table);
            }
            finally
            {
                if (bulkCopy != null) { bulkCopy.Close(); }
            }
        }