5.11 Использование класса MySqlBulkLoader
MySQL Connector/NET содержит класс массового загрузчика, который оборачивает оператор MySQL. Это позволяет Connector/NET загружать файл данных с локального или удаленного хоста на сервер или поток в базу данных (с Connector/NET 8.0.32).
Задействованный класс — MySqlBulkLoader. У этого класса есть различные методы, основным перегруженным методом является load, который позволяет загружать объект потока непосредственно в базу данных (8.0.32) или указанный файл на сервер. Можно установить различные параметры для управления обработкой файла данных. Это достигается путем установки различных свойств класса. Например, можно указать разделитель полей, такой как запятая или табуляция, а также разделитель записей, например, новая строка.
Следующий код демонстрирует простой пример использования класса MySqlBulkLoader. Сначала необходимо создать пустую таблицу, в данном случае в базе данных test.
CREATE TABLE Career (
Name VARCHAR(100) NOT NULL,
Age INTEGER,
Profession VARCHAR(200)
);
Также создается простой файл данных с разделителем полей в виде табуляции (можно использовать любой другой разделитель, например, запятую).
Table Career in Test Database
Name Age Profession
Tony 47 Technical Writer
Ana 43 Nurse
Fred 21 IT Specialist
Simon 45 Hairy Biker
В этом тестовом файле необходимо пропустить первые три строки, так как они не содержат данных таблицы. Эта задача выполняется в следующем примере кода C# путем установки свойства NumberOfLinesToSkip. Затем файл можно загрузить и использовать для заполнения таблицы Career в базе данных test.
Начиная с Connector/NET 8.0.15, свойство Local необходимо явно установить в True, чтобы включить возможность local-infile. В предыдущих версиях это значение устанавливалось по умолчанию в True.
using System;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string connStr = "server=localhost;user=root;database=test;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
MySqlBulkLoader bl = new MySqlBulkLoader(conn);
bl.Local = true;
bl.TableName = "Career";
bl.FieldTerminator = "\t";
bl.LineTerminator = "\n";
bl.FileName = "c:/career_data.txt";
bl.NumberOfLinesToSkip = 3;
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
// Upload data from file
int count = bl.Load();
Console.WriteLine(count + " lines uploaded.");
string sql = "SELECT Name, Age, Profession FROM Career";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr[0] + " -- " + rdr[1] + " -- " + rdr[2]);
}
rdr.Close();
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Done.");
}
}
}
Дополнительную информацию о LOAD DATA INFILE можно найти в . Дополнительную информацию о MySqlBulkLoader можно найти в справочной документации, которая поставлялась с вашим соединителем.
© 2025 Oracle
Licensed under the GPLv2 License.