Spec-Zone.ru › MySQL Connectors 1.0

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.
https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-programming-bulk-loader.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API