Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ScottTiger17 Member Откуда: Сообщений: 2 |
Добрый день! Посоветуйте с архитектурой решения. Есть статистика с сайта, которая несколько раз в день (~ каждые 2-3 часа) выгружается в папку в виде flat файлов с именами вила datafile_YYYYMMDD_HHMM. Есть задача написать джоб, который будет проверять наличие нового файла в папке и когда появляется новый файл, загружать этот файл в базу. Как лучше всего реализовать подобное? Спасибо. |
4 июл 18, 10:46 [21541695] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Загрузку можно делать либо SSIS пакетом, либо BCP В джобе соответственно либо вызывать пакет, либо SQL скрипт, проверяющий наличие нового файла, и вызывающий BCP |
||
4 июл 18, 10:50 [21541711] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5498 |
зависит от того, каким инструментом (лучше) владеете если сильны в скриптах, то можно написать батник/powershell, который будет брать новый файл и, используя BCP, грузить данные в базу вариант по-сложнее: используя SSIS, создать пэкедж, который будет делать то же самое еще вариант (чисто для широты выбора): используя T-SQL написать скрипт, который используя xp_dirtree & bulk insert будет делать то, что вам нужно пока писал, вспомнил про FileTables : https://docs.microsoft.com/en-us/sql/relational-databases/blob/load-files-into-filetables?view=sql-server-2017 так что, выбирайте на свой вкус, силы и подходящий для ваших условий |
||
4 июл 18, 10:59 [21541761] Ответить | Цитировать Сообщить модератору |
ScottTiger17 Member Откуда: Сообщений: 2 |
komrad, Спасибо, а есть а есть плюсы/минусы у каждого из этих 3 подходов? Нет опыта работы с данными тасками, какой из методов чаще применяют на продакшен средах? |
4 июл 18, 11:35 [21541954] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5498 |
безусловно, у каждого есть свои плюсы и минусы и они будут разными в зависимости от вашей среды и стандартов компании На вскидку: батник/скрипт - просто, но меньше диагностики ошибок, если что-то идет не так (надо всё писать самому) SSIS - мощно, более корпоративное решение, отладка и диагностика встроена и доступна, но требует знания инструмента и времени на создание решения T-SQL - для любителей процедур и нелюбителей скриптов и BI, всё решение внутри SQL сервера, но сильно отдает экстравагантностью FileTables - не скажу ничего, т.к. не сталкивался непосредственно. Хотя, судя по описанию и возможностям, может самое оптимальное для вас. Разумный тренд: не усложнять среду и придерживаться унифицированного подхода, не создавать зоопарк. Это облегчит последующую поддержку и сопровождение. Я бы сказал, что если у вас широко используются SSIS, то лучше делать на нем. Если преобладают скрипты, то делать скриптами. Не вникая в детали, я бы пошел по пути Powershell и SQL Agent Job. Тем более, что изобретать велосипед нет нужды - всё уже придумано до нас, осталось лишь только подогнать по месту напильником. https://www.mssqltips.com/sqlservertip/3208/automating-flat-file-sql-server-imports-with-powershell/ |
||
4 июл 18, 11:57 [21542040] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8330 |
ScottTiger17, если вы ничего не знаете - учите Integration Services. |
4 июл 18, 13:47 [21542432] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Он наверное самый сложный и функциональный из всех вариантов, но это если его полностью использовать. А для импорта csv файлов будет очень просто. |
||
4 июл 18, 16:43 [21543373] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |