Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Загрузка файлов статистики в таблицу.  [new]
ScottTiger17
Member

Откуда:
Сообщений: 2
Добрый день!

Посоветуйте с архитектурой решения.

Есть статистика с сайта, которая несколько раз в день (~ каждые 2-3 часа) выгружается в папку в виде flat файлов с именами вила datafile_YYYYMMDD_HHMM.
Есть задача написать джоб, который будет проверять наличие нового файла в папке и когда появляется новый файл, загружать этот файл в базу.

Как лучше всего реализовать подобное?

Спасибо.
4 июл 18, 10:46    [21541695]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
ScottTiger17
Есть задача написать джоб, который будет проверять наличие нового файла в папке и когда появляется новый файл, загружать этот файл в базу.

Как лучше всего реализовать подобное?
Так и сделать - написать джоб.
Загрузку можно делать либо SSIS пакетом, либо BCP
В джобе соответственно либо вызывать пакет, либо SQL скрипт, проверяющий наличие нового файла, и вызывающий BCP
4 июл 18, 10:50    [21541711]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
komrad
Member

Откуда:
Сообщений: 5244
ScottTiger17
Добрый день!

Посоветуйте с архитектурой решения.

Есть статистика с сайта, которая несколько раз в день (~ каждые 2-3 часа) выгружается в папку в виде flat файлов с именами вила datafile_YYYYMMDD_HHMM.
Есть задача написать джоб, который будет проверять наличие нового файла в папке и когда появляется новый файл, загружать этот файл в базу.

Как лучше всего реализовать подобное?

Спасибо.


зависит от того, каким инструментом (лучше) владеете

если сильны в скриптах, то можно написать батник/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]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
ScottTiger17
Member

Откуда:
Сообщений: 2
komrad,

Спасибо, а есть а есть плюсы/минусы у каждого из этих 3 подходов? Нет опыта работы с данными тасками, какой из методов чаще применяют на продакшен средах?
4 июл 18, 11:35    [21541954]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
komrad
Member

Откуда:
Сообщений: 5244
ScottTiger17
komrad,

Спасибо, а есть а есть плюсы/минусы у каждого из этих 3 подходов? Нет опыта работы с данными тасками, какой из методов чаще применяют на продакшен средах?

безусловно, у каждого есть свои плюсы и минусы
и они будут разными в зависимости от вашей среды и стандартов компании

На вскидку:
батник/скрипт - просто, но меньше диагностики ошибок, если что-то идет не так (надо всё писать самому)
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]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7750
ScottTiger17,

если вы ничего не знаете - учите Integration Services.
4 июл 18, 13:47    [21542432]     Ответить | Цитировать Сообщить модератору
 Re: Загрузка файлов статистики в таблицу.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
ScottTiger17
komrad,

Спасибо, а есть а есть плюсы/минусы у каждого из этих 3 подходов? Нет опыта работы с данными тасками, какой из методов чаще применяют на продакшен средах?
SSIS - решение для чайников, графический инструмент для импорта, куда уж проще.

Он наверное самый сложный и функциональный из всех вариантов, но это если его полностью использовать. А для импорта csv файлов будет очень просто.
4 июл 18, 16:43    [21543373]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить