C#如何在海量数据下的高效读取写入MySQL攻略
1. 前置条件
- 已安装MySQL
- 已安装MySql.Data NuGet包
- 已创建数据库和数据表
2. 高效读取MySQL数据
要从MySQL数据库中读取大量数据,最好使用DataReader
。它可以以只读方式快速读取大量数据,并且不会占用太多内存。下面是一个示例:
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM mytable", conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// 处理每一行数据
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
connectionString
是你的连接字符串,mytable
是你要读取的表的名称。
3. 高效写入MySQL数据
如果要将大量数据写入MySQL数据库,使用MySqlBulkLoader
类是最好的选择。这个类可以快速地将大量数据批量写入数据库,而且使用它比一次次地插入数据更加高效。下面是一个便于使用的示例:
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlBulkLoader loader = new MySqlBulkLoader(conn))
{
loader.TableName = "mytable";
loader.FieldTerminator = ",";
loader.LineTerminator = "\r\n";
loader.NumberOfLinesToSkip = 0;
loader.Load(File.OpenRead("data.txt"));
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
在上面的示例中,mytable
是你要写入的表的名称,data.txt
是你要写入的数据所在的文件。此外,你还需要根据你的数据文件指定FieldTerminator
和LineTerminator
。
示例一:写入CSV文件数据
假设你有一个CSV文件,文件中的数据以逗号分割。下面是一个示例,将CSV文件中的数据批量写入MySQL数据库中:
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
using (MySqlBulkLoader loader = new MySqlBulkLoader(conn))
{
loader.TableName = "mytable";
loader.FieldTerminator = ",";
loader.LineTerminator = "\r\n";
loader.NumberOfLinesToSkip = 0;
loader.Load(File.OpenRead("data.csv"));
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
示例二:写入DataTable数据
假设你有一个DataTable对象,你想将其中的数据批量写入MySQL数据库中。下面是一个示例:
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
DataTable dt = new DataTable();
// 填充你的DataTable对象
using (MySqlBulkLoader loader = new MySqlBulkLoader(conn))
{
loader.TableName = "mytable";
loader.NumberOfLinesToSkip = 0;
loader.WriteToServer(dt);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
在上面的示例中,mytable
是你要写入的表的名称,dt
是你要写入的数据所在的DataTable对象。
4. 总结
使用DataReader
和MySqlBulkLoader
类可以非常高效地读取和写入大量数据。当你需要处理大量数据时,这两个类都是不错的选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#如何在海量数据下的高效读取写入MySQL - Python技术站