首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlBulkCopy vs SSIS

SqlBulkCopy vs SSIS
EN

Stack Overflow用户
提问于 2020-05-16 01:24:52
回答 1查看 154关注 0票数 0

我试着写一个程序来执行大表,大约20亿条记录,到另一个表。在我看来,在插入之前,SqlBulkCopy需要等待,直到从SqlDataReader读取完所有数据。如果我在SSIS中使用相同的查询和表,SSIS会立即启动,并且我可以看到从目标表插入数据。

我的编码正确吗?我怎么才能让它和SSIS一样呢?

代码语言:javascript
复制
                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(bukCopyData.SourceQuery, conn))
                    {
                        cmd.CommandTimeout = 0;
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            performBulkCopy(connectionStringDest, DestinationTable, reader);
                        }
                    }
                }
代码语言:javascript
复制
        private void performBulkCopy(string connectionString, string destinationTable, SqlDataReader reader)
        {
            using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString,
                SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.KeepNulls
                ))
            {
                sbc.DestinationTableName = destinationTable;
                sbc.BatchSize = 102400;
                sbc.BulkCopyTimeout = 0;
                try
                {
                    sbc.WriteToServer(reader);
                } catch (Exception e)
                {
                    throw;
                } finally
                {
                    reader.Close();
                }


            }

        }

    }
EN

回答 1

Stack Overflow用户

发布于 2020-05-16 02:02:56

实际上,EnableStreaming属性似乎起作用了。我必须确保查询中的列顺序与目标表匹配。不确定为什么需要很长时间才能抛出错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61824997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档