Комментарии 19
Почему бы не составить полный INSERT INTO ...
конкатенацией строк и значений в формуле Экселя?
Только не забыть экранировать одинарные кавычки в строках.
А потом протянуть его до низу.
Но протягивать на 1000 строк это неудобно. Надоедает. Даже если снизу тянуть и то надоедает. Сперва до низу скроллить, потом доверху тянуть.
Я час больше чем на пару сотен строк стараюсь не протягивать и решать другими средствами.
- Вводим формулу в первую строку
- Выбираем диапазон с клавиатуры (вводим D1:D1000 в поле ввода слева от поля ввода для формул)
- Выбираем в меню
Fill
Зачем тянуть? Можно даблкликнуть на уголок, за который вы тяните — оно само скопируется до низа таблицы.
Не благодарите. =)
http://dev.mysql.com/doc/refman/5.7/en/load-data.html
https://www.sqlite.org/cli.html#csv_import
Кстати, в условии задачи не было специфицировано, что БД именно MySQL или его форк.
[^0-9,-]
— мягко говоря, не самая удачная регулярка для данной задачи… строки типа "1-2-3", "1,2,3", etc. останутся как валидные
Просто потому что вариант некорректности данных не рассматривается в условиях задачи.
А вариант что данные небезопасны должен учитываться всегда, а то будет как в случае с Joomla и взломом через User-Agent — http://www.securitylab.ru/news/477643.php
Максимум что можно сделать, это сигнализировать поставщику данных если замена по регулярному выражению показала срабатывание. Остановить работу, сигнализировать и запросить подтверждение на ввод.
Вот картинка в LO после работы регулярных выражений.
Во Вы даёте! Такой длинный коммент в ответ написать, при этом не прочитав тот, на который отвечали )))
Я ж Вам примеры "чисел" привёл, которые Ваша проверка пропустит до уровня SQL.
Или это был велосипед для защиты от SQL-Injection? А то, что SQL на вставку не сработает, — это ok?
В любом случае, то, что Вы делаете, противоречит фразе "применил регулярные выражения для удаления всего кроме числовых значений". Т.к. ряд вариантов нечисловых значений останется нетронутым.
А то, что SQL на вставку не сработает, — это ok?
Да, регулярка нужна не для исправления некорректных данных, а для безопасности.
Не срабатывание импорта по причине наличия смысловых ошибок в исходном файле — ответственность поставщика файла. Всё на что я имею право в данной ситуации — сообщить поставщику файла о том, что данные были импортированы некорректно.
Но, Вы навели меня на одну мысль — в реальной задаче, сперва нужно постить в тестовую таблицу. Ну или с транзакциями.
Любой мусор-нечисло споткнётся на проверке параметров процедуры, не дойдя и близко к инсерту.
После загрузки процедуру можно сразу же дропнуть, или оставить для следующей порции данных.
Excel, SQL и легендарный барометр — решаем простую задачу разными способами