Построчное считывание с XmlReader и передача в IDataReader (SqlBulkCopy)
Есть XML большого объема, структура их следующая
<Objects>
<Object ID="" name="" level="" .... />
<Object ID="" name="" level="" .... />
Мне необходимо их загрузить в БД с помощью BulkLoad
, хочу построчно передавать их и сразу записывать в потоке.
Читаю XML так -
XmlReader r = XmlReader.Create("file:////" + PathToFile);
while (r.Read())
{
if ((r.Name == "Object") && (r.HasAttributes))
{
}
}
Создал класс который наследуется от IDataReader
public class CustomObjectDataReader : IDataReader
{
...
}
Понятно что запись будет происходить примерно так:
CustomObjectDataReader reader = new CustomObjectDataReader();
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlBulkCopy cpy = new SqlBulkCopy(conn))
{
cpy.DestinationTableName = "rundom1";
cpy.WriteToServer(reader);
}
}
Проблема в том как считывать построчно в потоке, записывать, и при этом чтобы сохранялось "состояние" XmlReader
, те мы знали какую строку считали, чтобы не начинать все заново.