gpt4 book ai didi

azure - SqlBulkCopy Azure DataTable 比流传输更快

转载 作者:行者123 更新时间:2023-12-01 06:27:14 26 4
gpt4 key购买 nike

我需要一个辅助角色,从 Blob 中获取 txt 文件并将其批量放入 Azure Sql 表中。

我正在使用LumenWorks.Framework.IO提供的SqlBulkCopy,我创建了 2 个版本的辅助角色:1)读取整个文件,将其加载到DataTable中,执行SqlBulkCopy2)Stream读取文件并将Stream传递给SqlBulkCopy

问题是第二个版本的性能只有第一个版本的一半。

以 10MB txt 文件为例,包含 90'000 条记录:-第一个版本:半秒加载文件,2秒转换为DataTable,20秒SqlBulkCopy

-第二个版本:总共 50 秒(超过一倍!)

我尝试更改 BatchSize,但似乎没有太大区别,而且我不知道我做错了什么,这是 2' 版本代码:

using (var stream = await blockBlob.OpenReadAsync(cancellationToken))
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader, true, ';'))
using (var conn = new SqlConnection(CloudConfigurationManager.GetSetting("TestDbConn")))
{
await conn.OpenAsync(cancellationToken);
connAperta = true;
using (var transaction = conn.BeginTransaction())
using (var bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity | SqlBulkCopyOptions.TableLock, transaction))
{
bulkCopy.BulkCopyTimeout = 300;
bulkCopy.DestinationTableName = "[3sc_base_1]";
await bulkCopy.WriteToServerAsync(csv, cancellationToken);
transaction.Commit();
}
}

我做错了什么?

最佳答案

查看新的 Azure SQL 数据库功能 bulk upload directly from an Azure Storage account .

这应该是实现您想要的目标的最快、最简单的方法,除非您不是直接流式传输而是也进行转换。

关于azure - SqlBulkCopy Azure DataTable 比流传输更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26972217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com