Spec-Zone .ru
спецификации, руководства, описания, API

21.2.5.13. Используя MySqlBulkLoader Класс

Функции MySQL Connector/Net объемный загрузчик class, который обертывает оператор MySQL LOAD DATA INFILE. Это дает MySQL, Connector/Net возможность загрузить файл данных от локального или удаленного узла до сервера. Затронутый class MySqlBulkLoader. У этого class есть различные методы, основной быть load заставить указанный файл быть загруженным в сервер. Различные параметры могут быть установлены, чтобы управлять, как файл данных обрабатывается. Это достигается посредством установки различных свойств class. Например, используемый разделитель полей, такой как запятая или вкладка, может быть определен, наряду с разделителем записи, таким как новая строка.

Следующий код показывает простой пример использования MySqlBulkLoader class. Сначала пустая таблица должна быть составлена, в этом случае в test база данных:

CREATE TABLE Career (       Name VARCHAR(100) NOT NULL,       Age INTEGER,       Profession VARCHAR(200));

Простой разграниченный вкладкой файл данных также создается (он мог использовать любой другой разделитель полей, такой как запятая):

Table Career in Test DatabaseName  Age  ProfessionTony  47  Technical WriterAna  43  NurseFred  21  IT SpecialistSimon  45  Hairy Biker

Отметьте, что с этим тестовым файлом первые три строки должны будут быть проигнорированы, поскольку они не содержат табличные данные. Это может быть достигнуто, используя NumberOfLinesToSkip свойство. Этот файл может тогда быть загружен и использоваться, чтобы заполнить Career таблица в test база данных:

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.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 может быть найден в Разделе 13.2.6,"LOAD DATA INFILE Синтаксис". Дополнительная информация о MySqlBulkLoader может быть найден в справочной документации, которая была включена с Вашим соединителем.