要从 SQL Server 迁移一个表到 MongDB
该表有 1 千万条数据,使用 DataReader
的伪代码如下:
using (var connection = new SqlConnection(_connectionString))
{
var command = new SqlCommand(@"SELECT * FROM dbo.table");
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
var item = reader.Output();
_svc.Insert(item);
}
}
在实际执行过程中,出现了超时,异常如下:
System.Data.SqlClient.SqlException (0x80131904): A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - Success)
这个异常说明与数据库的 tcp 连接断了,详见 A transport-level error has occurred when sending the request to the server
建议不要一下读这么多,一部分一部分处理。
count查询总数,然后分页读取
分页,然后经历吧*替换为具体字段可优化速度