Как я могу вставить 10 миллионов записей в кратчайшие сроки?
У меня есть файл (который имеет 10 миллионов записей), как показано ниже:
line1
line2
line3
line4
.......
......
10 million lines
В общем, я хочу вставить 10 миллионов записей в базу данных. поэтому я читаю файл и загружаю его на SQL Server.
Код C #
System.IO.StreamReader file =
new System.IO.StreamReader(@"c:\test.txt");
while((line = file.ReadLine()) != null)
{
// insertion code goes here
//DAL.ExecuteSql("insert into table1 values("+line+")");
}
file.Close();
но вставка займет много времени. Как я могу вставить 10 миллионов записей в кратчайшие сроки с помощью C #?
Обновление 1:
Bulk INSERT:
BULK INSERT DBNAME.dbo.DATAs
FROM 'F:\dt10000000\dt10000000.txt'
WITH
(
ROWTERMINATOR =' \n'
);
Моя таблица, как показано ниже:
DATAs
(
DatasField VARCHAR(MAX)
)
но я получаю следующую ошибку:
Сообщение 4866, уровень 16, состояние 1, строка 1
Массовая загрузка не удалась. Столбец слишком длинный в файле данных для строки 1, столбца 1. Убедитесь, что терминатор поля и терминатор строки указаны правильно.
Msg 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB "BULK" для связанного сервера "(null)" сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке.
Msg 7330, уровень 16, состояние 2, строка 1
Невозможно получить строку от поставщика OLE DB "BULK" для связанного сервера "(null)".
Ниже работает код:
BULK INSERT DBNAME.dbo.DATAs
FROM 'F:\dt10000000\dt10000000.txt'
WITH
(
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
);