Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.04.2019, 13:02
|
|||
|---|---|---|---|
Продолжить транзакцию после ошибки INSERT |
|||
|
#18+
Делаю импорт большого файла, иногда в столбце с integer присутствует текст непотребный, что приводит к ошибке вставки данных. Раньше делал так (через php - pgPDO) обрабатываю построчно, вставляю, ловлю в try catch ошибку, пишу ее в лог, продолжаю обработку дальше. Но на очень больших файлах это к очень долгому импорту. Отсюда решение - вставку делаю в тарнзакции: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Применение транзакции ускорило ипорт примерно в 100 раз, так что отказываться от транзакции уже не хочу, но вот беда catch сбрасывает транзакцию и на следующем шаге после ошибки я получаю исключение: "ОШИБКА: текущая транзакция прервана, команды до конца блока транзакции игнорируются" Вопрос: есть ли флаги какие у PDO или способ организации запроса какой хитрый, чтобы пропустить плохую строку, транзакцию не прерывать и работать дальше. Почему не пишу свой валидатор? Полей много, времени мало, все файлы разные, пользователь сам мапирует столбцы - а валидатор сервера - он же вполне себе хорош, и сообщения на двух языках, и коды, все уже при нем... только вот транзакция рвется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2019, 15:49
|
|||
|---|---|---|---|
Продолжить транзакцию после ошибки INSERT |
|||
|
#18+
deadline буду писать валидотор :) PS погуглил - в MSSQL есть что то типа save-точек. Транзакцию можно откатить не к началу, а к этой точке... но это другая БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2019, 16:07
|
|||
|---|---|---|---|
Продолжить транзакцию после ошибки INSERT |
|||
|
#18+
prustrdeadline буду писать валидотор :) PS погуглил - в MSSQL есть что то типа save-точек. Транзакцию можно откатить не к началу, а к этой точке... но это другая БД https://postgrespro.ru/docs/postgresql/11/sql-savepoint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=1995262]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 153ms |

| 0 / 0 |
