Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用sql大容量插入将大型csv文件保存到azure数据库的最快方法是什么?_C#_Sql Server_Azure_Bulkinsert - Fatal编程技术网

C# 使用sql大容量插入将大型csv文件保存到azure数据库的最快方法是什么?

C# 使用sql大容量插入将大型csv文件保存到azure数据库的最快方法是什么?,c#,sql-server,azure,bulkinsert,C#,Sql Server,Azure,Bulkinsert,我正在尝试从FTP下载一个大文件并将其存储到某个azure存储中,然后在azure上运行sql中的BulkInsert并将数据保存到表中 我有一个FTP服务器,我从中读取数据作为CSV文件。其中一些文件非常重,大约1.5GB甚至更大。到目前为止,我一直在将这些文件下载到内存中,然后使用azure上的C#BulkCopy将它们保存到数据库中,但现在我从MemoryException中得到了这个错误,这似乎是由于文件的大小 这就是为什么我考虑直接从azure上的SQL使用BulkInsert,但是S

我正在尝试从FTP下载一个大文件并将其存储到某个azure存储中,然后在azure上运行sql中的BulkInsert并将数据保存到表中

我有一个FTP服务器,我从中读取数据作为CSV文件。其中一些文件非常重,大约1.5GB甚至更大。到目前为止,我一直在将这些文件下载到内存中,然后使用azure上的C#BulkCopy将它们保存到数据库中,但现在我从MemoryException中得到了这个错误,这似乎是由于文件的大小

这就是为什么我考虑直接从azure上的SQL使用BulkInsert,但是SQL实例需要访问文件下载到的存储,当然它不能是我的本地计算机,因为当源文件位于我的本地存储上时,我似乎无法在azure上的SQL Server上运行BulkInsert命令


有没有办法将文件下载并保存到SQL有权访问的Azure存储中,然后执行BulkInsert?

您可以使用数据工厂将数据从FTP复制到Azure SQL

数据工厂具有更好的大数据传输性能:

数据工厂支持FTP作为连接器

请参考以下教程:

  • 如何将文件直接从FTP下载到azure上的存储中

    您可以使用创建管道,使用FTP作为源,使用存储作为链接服务器

    您还可以直接将一个大文件从FTP复制到Azure SQL


    希望这能有所帮助。

    使用C#中的
    SqlBulkCopy
    类,请参见关于批量和Azure的帖子:@JonathanLarouche我不想从内存保存数据,我想从存储在硬盘驱动器(Azure上的存储)的文件中插入数据如果您正在从Azure Blob读取数据,那么您可以阅读以下内容:使用Azure数据工厂即可。ADF在内部使用了很多优化