Массовая вставка в базу данных доступа из C #? - PullRequest
1 голос
/ 10 января 2011

Как я могу это сделать.У меня есть около 10000 записей в файле Excel , и я хочу максимально быстро вставить все записи в базу данных доступа?

Есть предложения?

Ответы [ 2 ]

1 голос
/ 10 января 2011

То, что вы можете сделать, выглядит примерно так:

    Dim AccessConn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Test Files\db1 XP.mdb") 
    AccessConn.Open() 
    Dim AccessCommand As New System.Data.OleDb.OleDbCommand("SELECT * INTO [ReportFile] FROM [Text;DATABASE=C:\Documents and Settings\...\My Documents\My Database\Text].[ReportFile.txt]", AccessConn) 
    AccessCommand.ExecuteNonQuery() 
    AccessConn.Close() 

Отключите индексирование для затронутых таблиц перед началом загрузки, а затем восстановите индексы с нуля после завершения массовой загрузки. Восстановление индексов с нуля происходит быстрее, чем попытка поддерживать их в актуальном состоянии при загрузке большого объема данных в таблицу.

Если вы решите вставлять строку за строкой, то, возможно, захотите рассмотреть возможность использования транзакций. Мол, открыть транзакцию, вставить 1000 записей, зафиксировать транзакцию. Это должно работать нормально.

0 голосов
/ 10 января 2011

Используйте функции импорта данных по умолчанию в Access. Если это не соответствует вашим потребностям и вы хотите использовать C #, используйте стандартный ADO.NET и просто пишите запись для записи. Записи 10K не должны занимать слишком много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...