|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Доброго времени суток. Работаем с СУБД Оракл много лет, но тут принесли файл, сказали дамп базы, размером в 43 гигабайта и сказали нужно в этом дампе найти все данные по нескольким организациям. Файл текстовый, с расширением sql такого вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Никаких объяснений по файлу нет. Судя по OPTIMIZE_FOR_SEQUENTIAL_KEY это Ms sql 2019. У нас имеется развернутый в свое время сервер БД MS sql 2016 Enterprise, но использовать его так и не пришлось и человек, кто этим занимался уволился, поэтому задание поручили мне. Вопрос, каким образом загрузить данные этого файла в БД? В SSMS ничего подобного не нашел. Может можно как то выполнить этот sql запрос, чем он по сути и является, но не получается это сделать, слишком большой размер. Поиском пользовался, но ничего подобного не нашел. Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 09:47 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Пробуй грузить кусочками ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 09:52 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 09:53 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
invm, Спасибо, попробую, но только завтра и отпишусь, уверен был, что есть что-то подобное, как в Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:02 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro, Можно взять grep и ничего никуда не грузить. Судя по [dbo].[Organ] sql тебе ничем не поможет. Общую структуру только понять надо. Ставишь cygwin/wsl/linux и делаешь grep "<строчка-которую-надо-найти>" файл-в-котором-ищешь > файл-в-который-сохранить-результат ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:22 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro человек, кто этим занимался уволилс Это он не спроста. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:25 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro, Залить файл можно из командной строки используя sqlcmd https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15 Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском. Базу лучше перевести в SIMPLE режим, чтобы лог не раздувался. Полагаю, что потребуется несколько попыток, чтобы залилось успешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:47 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro, файл можно попробовать выполнить с помощью SQLCMD.EXE. Большой может не поместиться в буфере SSMS. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:59 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
komrad Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском. поставить временный 2019 инстанс будет всяко быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:18 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Критик komrad Поскольку в файле упомянуты фичи от 2019, то можно их убрать перед первым запуском. поставить временный 2019 инстанс будет всяко быстрее В общем - да, но всё зависит от возможностей автора - есть ли куда ставить, захочет ли морочиться и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:34 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro, По мне так проще сделать скрипт и распарсить этот запрос в CSV файл и пульнуть BULK'ом в таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:54 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д. Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять. Готовые решения под подобные задачи на редкость унылы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 13:38 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
L_argo, Паразитные строки скриптом игнорить Обработчик грамотный нужен. Но согласен, решение сложное. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:00 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
L_argo Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д. Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять Решение должно быть эффективным с точки зрения затрат времени, и уж явно разработка дополнительного ПО не является правильным путём решения задачи) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 15:07 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Критик и уж явно разработка дополнительного ПО не является правильным путём решения задачи) Может получиться, что без дополнительного ПО придется долго плясать с бубном. И в ручном режиме кое-как медленно и печально выполнить задачу. Без возможности быстрого повторения. Тем более, что такая прога пишется за полчаса. И на подготовку данных для нее вообще ничего не надо. Просто скормить файл и получить наполненные таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 15:37 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Критик L_argo Сначала надо убедиться, что в файле все корректно подготовлено, что не факт. Пролистать пару десятков страниц в толковом редакторе на предмет паразитного переноса строки, корректных кавычек, дат и т.д. Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять Решение должно быть эффективным с точки зрения затрат времени, и уж явно разработка дополнительного ПО не является правильным путём решения задачи) С таким подходом предлагаю распечатать файл на бумаге в ворде и посадить оператора вводить данные вручную. Эффект 146% ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 17:37 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
L_argo Потом можно наваять простую прогу, которая будет построчно оттуда вычитывать и выполнять. По моему, у неё нет ограничений на размер файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 18:37 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro, без развертывания базы "найти все данные по нескольким организациям" скорее всего будет сложно. Вы не знаете структуру данных, какие там справочники, если они вообще есть, читаемо ли там созданы ключи или придется догадываться, есть ли там процедуры, триггеры и тп. Хорошо бы иметь запросы, которые делались к этой базе. ИМХО я бы сначала прошерстил файл в текстовом виде (нужен хороший редактор, например консольный) на предмет какие там таблицы/объекты, потом бы развернул нужные таблицы, возможно не в полном объёме, и там уже смотреть по месту. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 23:27 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro принесли файл, сказали дамп базы, размером в 43 гигабайта и сказали нужно в этом дампе найти все данные по нескольким организациям. Файл текстовый, с расширением sql такого вида: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 00:29 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Нестандартное мышление С таким подходом предлагаю распечатать файл на бумаге в ворде и посадить оператора вводить данные вручную. Эффект 146% Мой опыт показывает, что такой подход работает. Мне попадались разные файлы с данными. И часто приходилось к ним делать "индивидуальный подход", т.к. стандартные инструменты откровенно пасовали. В этих файлах встречались: глючные строки, разделители, форматы, разнородные форматы (н-р дат или чисел), автозамены каких-то спецсимволов, мягкие переносы, двойные переносы, БОМы, хаос с кавычками и т.д. Помню встретился в теле файла древний символ "конец данных". Не помню его аски-номера, но был такой. Стандартный импорт тупо стопорил на этом символе, а текстовый редактор его показывал обычным пробелом. Пришлось призадуматься. Благо, что нашел и все зашло стандартно. "А ты говоришь купаться — вода холодная" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:14 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Всем спасибо, сегодня вышел на работу и занялся загрузкой этого файла через sqlcmd, все скушало, но загрузив чуть более 5 млн. строк (это около 5 %) все встало из за ошибки "105 уровень 15 незакрытие строки в конце символьной строки", а это печаль и боль. Неужели нельзя игнорировать эти ошибки? Ну не смогла строчку загрузить, пусть дальше идет! Таблиц всего 5 и найти связи между ними можно, id у всех есть. Парсить файл не хотелось бы, но видимо придется или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:26 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro Неужели нельзя игнорировать эти ошибки? Можете написать простенький парсер, который разобьет исходный файл на множество мелких по разделителю "go" Потом последовательно их в цикле выполнять. Так править подобные ошибки будет намного легче. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:28 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
estro Парсить файл не хотелось бы, но видимо придется или нет? Да выбери что надо grep'ом на коленке, что ты мучаешься? Если там всего 5 таблиц. Найди idшники нужные и вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:30 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
crutchmaster, grep не поможет, id повторяются, не уникальные для всей БД. Я пробовал в тотале по f3 искать так, тяжело и не интересно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:31 |
|
Загрузка данных из большого файла
|
|||
---|---|---|---|
#18+
Критик, 22135663 Mssql 2016 тоже должен все это скушать, кроме этого ключа, остальное создалось норм. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:37 |
|
|
start [/forum/topic.php?fid=46&msg=39959817&tid=1686103]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 151ms |
0 / 0 |