Как эффективно записывать данные в базу данных, используя c #? - PullRequest
1 голос
/ 14 сентября 2010

мое приложение для Windows читает текстовый файл и вставляет его в базу данных.Проблема в том, что текстовый файл очень большой (по крайней мере, для наших бюджетных компьютеров).В нем 100 тысяч строк, и для его записи в базу данных требуется время.

Не могли бы вы, ребята, подсказать, как мне эффективно читать и записывать данные, чтобы они не перегружали машинную память?К вашему сведению ... Разделитель столбцов: '|'Разделитель строк: NewLine

Имеет примерно 10 столбцов .. (Имеется информация о клиентах ... например, имя, фамилия, адрес, телефоны, адреса электронной почты и т. Д.)

СЧИТАЙТЕ, ЧТО... Я ОГРАНИЧЕНО ОТ ИСПОЛЬЗОВАНИЯ BULK CMD.

Ответы [ 3 ]

3 голосов
/ 14 сентября 2010

Вы не говорите, какую базу данных вы используете, но если это SQL Server, вам следует обратиться к команде BULK INSERT или утилите BCP.

0 голосов
/ 14 сентября 2010

Возможно ли вам зарегистрировать свою пользовательскую сборку на Sql Server?(Я предполагаю, что это sql сервер, потому что вы уже говорили, что ранее использовали массовую вставку).

Чем вы можете вызывать вашу сборку для выполнения (в основном) всего, что вам нужно, например, получения файла из какой-либо службыили любой другой вариант), синтаксический анализ и вставка непосредственно в таблицы.

Этот вариант мне не нравится, но иногда он может быть более экономным.

0 голосов
/ 14 сентября 2010

Учитывая, что абсолютно нет шансов получить помощь от ваших сотрудников по безопасности и использовать команды BULK, вот такой подход я бы выбрал:

  1. Убедитесь, что вы читаете весь текстСначала файл, прежде чем вставить в базу данных.Таким образом, уменьшая число операций ввода-вывода.

  2. Проверьте, какие индексы у вас есть в таблице назначения.Можете ли вы вставить во временную таблицу без индексов или зависимостей, чтобы отдельные вставки были быстрыми?

  3. Должны ли эти данные отображаться сразу после вставки?Если нет, то вы можете запланировать задание на чтение из временной таблицы в шаге 2 выше и вставить в таблицу назначения (которая имеет индексы, внешние ключи и т. Д.).

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