Каков наилучший способ обработать и импортировать большой CSV (500 тыс. записей) на SQL Server с использованием Vbscript?

#sql-server #vbscript #asp-classic

#sql #sql-server #sql-server-2008 #asp-classic #vbscript

Вопрос:

У меня есть система, которая требует, чтобы большое количество имен и адресов электронной почты (только два поля) импортировалось через загрузку CSV.

Я могу достаточно легко справиться с загрузкой, как мне проверить адреса электронной почты перед обработкой импорта.

Также как я мог бы обработать это быстро или в фоновом режиме, не требуя от пользователя просмотра работы скрипта?

Используя классический ASP / SQL server 2008.

Пожалуйста, без насмешек над классическим asp.

Комментарии:

1. какой уровень проверки вы ищете? Просматриваем поле string и убеждаемся, что там есть .com, .net, @ symbol и т.д.? Может быть, что-то вроде функции, найденной здесь: sqlteam.com/forums/topic.asp?TOPIC_ID=113963

Ответ №1:

Нужно ли выполнять эту загрузку через приложение ASP? Если нет, то лучшим инструментом для этой работы является любой язык сценариев, с которым вы чувствуете себя наиболее комфортно и который может сделать это с наименьшими затратами времени на кодирование. Если вам нужно, чтобы пользователи могли загружать файлы в классическое приложение ASP и иметь надежный процесс вставки допустимых записей в базу данных и отклонения недопустимых, ваши параметры меняются.

Нужно ли предоставлять обратную связь пользователям? Например, сообщить им, какие именно строки были недействительными?

Если вы имеете дело со вторым сценарием, я бы попросил приложение asp просто сохранить файл и запустить другой процесс, службу .net или запланированную задачу или что-то в этом роде, выполнить импорт и сообщить о его ходе в текстовом файле, который может проверить приложение asp. Это возвращает вас к выполнению этого на любом удобном для вас языке сценариев, и вам не нужно иметь дело с истечением времени ожидания http-запроса.

Если вы загуглите «regex valid email», вы можете найти множество регулярных выражений для идентификации недействительных адресов электронной почты.

Ответ №2:

В прошлой жизни я делал подобные вещи, перетаскивая файл в рабочую таблицу с помощью DTS, а затем обрабатывая его с помощью пакетов команд SQL. Сегодня вы бы использовали службы интеграции.

Это позволяет вам очень быстро передавать данные на SQL Server и предотвращать тайм-аут сценария, после чего вы можете использовать любой предпочитаемый вами метод (например, пакеты, управляемые AJAX, пакеты, управляемые перенаправлением и т.д.) Для обработки отдельных фрагментов данных или запланировать их выполнение как единый пакет (задание SQL Server) и просто сообщить о результатах.

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