簡體   English   中英

C# MySQL 庫是否等效於 SQL SqlBulkCopy class?

[英]Does the C# MySQL library have an equivalent to the SQL SqlBulkCopy class?

我知道有 MySqlBulkLoader,但它不是等價物,因為它無法從 memory 發送數據並且需要一個文件。

這對我來說是個大問題,因為我想從一個已經執行大量 I/O 的程序中將大量數據批量插入到 MySQL 數據庫中。
我不能再將數百萬行寫入一個文件,然后讓 MySqlBulkLoader 再次讀回它們,當我已經在 memory 中擁有它們時,這是沒有意義的。

為什么沒有直接從 memory 而不是使用磁盤上的文件的選項?

我懷疑您使用 Oracle 的 Connector.NET。 該庫有幾個問題,主要圍繞異步/等待和實體框架支持,但其中之一是有限的批量加載支持。 MySQL 允許從標准控制台批量加載。

使用MySqlConnector package 而不是 Oracle 的驅動程序。最流行的 EF 提供程序使用 package, Pomelo.EntityFrameworkCore.MySql與 Oracle 的 900K 下載相比,下載量為 22M。 與 Oracle 的 38M 相比,MySqlConnector 本身有 35M 的下載量。

MySqlConnector 允許通過其MySqlBulkCopy class 進行批量導入,其工作方式與 SqlBulkCopy 類似,並接受 DataTable 和 DataReader輸入。

var dataTable = GetDataTableFromExternalSource();

// open the connection
using var connection = new MySqlConnection("...;AllowLoadLocalInfile=True");
await connection.OpenAsync();

// bulk copy the data
var bulkCopy = new MySqlBulkCopy(connection);
bulkCopy.DestinationTableName = "some_table_name";
var result = await bulkCopy.WriteToServerAsync(dataTable);

MySqlConnector的核心API與Connector.NET相同。 還有一個遷移指南解釋了這些差異。 本指南包括在 MySqlConnector 中修復的 Connector.NET 錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM