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

Откуда:
Сообщений: 795
Приветствую!
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Такой вопрос:
Как можно загружать xml на удаленный ftp сервер?

SSIS вроде как с секьюрным фтп не в ладах...
DTS на 2012 тоже нема
3 июн 16, 14:46    [19255182]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
mishanya3624
DTS на 2012 тоже нема
Можно загружать утилитой, их много, типа putty, wget (wput) и т.д.
SSIS даже с несекюрным ftp не особо в ладах :-)
3 июн 16, 14:50    [19255210]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
SSIS (скрипт на C#) + psftp.exe с ключом/паролем.
3 июн 16, 16:58    [19255998]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

Откуда:
Сообщений: 795
Владислав Колосов,

у меня изначально была такая идея:
1. Выгружаю Xml через агента в локальную директорию по расписанию
2. на C#/Python пишу прогу, которая будет проверять наличие файла в директории и отправлять его на фтп
Но это как-то не айс фаще...
3 июн 16, 17:25    [19256123]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

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

сразу с агента не получится, как я понимаю?
3 июн 16, 17:40    [19256185]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
mishanya3624
alexeyvg,

сразу с агента не получится, как я понимаю?
В смысле, не получится запустить утилиту? Получится.
Или не получится передать файл по FTP без утилиты? Конечно, без утилиты нельзя. Агент вообще ничего не умеет, только запускать скрипты T-SQL и программы.
mishanya3624
2. на C#/Python пишу прогу, которая будет проверять наличие файла в директории и отправлять его на фтп
Проще написать cmd файл. Ну или просто вызвать утилиту, если её возможностей достаточно.
Владислав Колосов
SSIS (скрипт на C#) + psftp.exe с ключом/паролем.
А зачем SSIS?

И тем более зачем в нём скрипт на C#, что он будет делать, можете хоть намекнуть? Выглядит как "запустить AutoCad и на нём скрипт на Lisp".
3 июн 16, 20:03    [19256609]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
Владислав Колосов
Member

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

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

Код на C# создает пакетный файл для выполнения SFTP утилиты - приема-передачи данных и чтения каталога с использованием переменных пакета (из-за требований к формированию имени файла).
6 июн 16, 11:28    [19261707]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

Откуда:
Сообщений: 795
Подскажите:
если запускаю просто хранимку, то вывод Xml норм, такого плана:
<tbl_Objects>
  <ID>CE99897F-24E6-4673-B607-CB0B5EF925FC</ID>
  <ProjectID>3036E33E-03FE-4051-8262-B43D0FD37C66</ProjectID>
  <BuildingID>9C74F415-D949-47AD-850A-A7738B3EEE7D</BuildingID>
  <SectionID>B6F7B949-D1A7-4D9C-B4BE-C982845BA393</SectionID>
  <ObjectTypeID>89FC5D51-1D52-494B-AD44-79F9EF7487D3</ObjectTypeID>
  <ObjectImage>16к_10с_1-01.svg</ObjectImage>
  <Floor>4</Floor>
  <NumberObject>1255</NumberObject>
  <Square>58.78</Square>
  <AmountSquare>91000.00</AmountSquare>
  <AmountObject>5348980.00</AmountObject>
  <Rooms>2</Rooms>
</tbl_Objects>
<tbl_Objects>
  <ID>13D7FA35-29C0-485E-906E-095574BAE487</ID>
  <ProjectID>3036E33E-03FE-4051-8262-B43D0FD37C66</ProjectID>
  <BuildingID>9C74F415-D949-47AD-850A-A7738B3EEE7D</BuildingID>
  <SectionID>B6F7B949-D1A7-4D9C-B4BE-C982845BA393</SectionID>
  <ObjectTypeID>89FC5D51-1D52-494B-AD44-79F9EF7487D3</ObjectTypeID>
  <ObjectImage>16к_10с_1-01.svg</ObjectImage>
  <Floor>2</Floor>
  <NumberObject>1241</NumberObject>
  <Square>58.78</Square>
  <AmountSquare>89000.00</AmountSquare>
  <AmountObject>5231420.00</AmountObject>
  <Rooms>2</Rooms>
</tbl_Objects>


если выполняю ее с агента:
DECLARE @result int
DECLARE @OutputFileName varchar(150)
DECLARE @cmd nvarchar( 500)
use eco
Set @OutputFileName = 'C:\1\sql.xml'
Set @cmd = 'BCP "exec eco.dbo.UPLOAD_TO_SYTE" queryout "' + @OutputFileName + '" -T -w -C1251 '
select @cmd 
EXEC @result = master..xp_cmdshell @cmd


то вывод превращается в кашу:

<tbl_Objects><ID>CE99897F-24E6-4673-B607-CB0B5EF925FC</ID><ProjectID>3036E33E-03FE-4051-8262-B43D0FD37C66</ProjectID><BuildingID>9C74F415-D949-47AD-850A-A7738B3EEE7D</BuildingID><SectionID>B6F7B949-D1A7-4D9C-B4BE-C982845BA393</SectionID><ObjectTypeID>89FC5D51-1D52-494B-AD44-79F9EF7487D3</ObjectTypeID><ObjectImage>16к_10с_1-01.svg</ObjectImage><Floor>4</Floor><NumberObject>1255</NumberObject><Square>58.78</Square><AmountSquare>91000.00</AmountSquare><AmountObject>5348980.00</AmountObject><Rooms>2</Rooms></tbl_Objects><tbl_Objects><ID>13D7FA35-29C0-485E-906E-095574BAE487</ID><ProjectID>3036E33E-03FE-4051-8262-B43D0FD37C66</ProjectID><BuildingID>9C74F415-D949-47AD-850A-A7738B3EEE7D</BuildingID><SectionID>B6F7B949-D1A7-4D9C-B4BE-C982845BA393</SectionID><ObjectTypeID>89FC5D51-1D52-494B-AD44-79F9EF7487D3</ObjectTypeID><ObjectImage>16к_10с_1-01.svg</ObjectImage><Floor>2</Floor><NumberObject>1241</NumberObject><Square>58.78</Square><AmountSquare>89000.00</AmountSquare><AmountObject>5231420.00</AmountObject><Rooms>2</Rooms></tbl_Objects>


что не так делаю?
7 июн 16, 12:29    [19266562]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
mishanya3624
что не так делаю?

етож одно и тоже по факту..форматирование должен заниматься клиент
7 июн 16, 12:53    [19266702]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

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

это да, одно и тоже, но не красиво как-то
7 июн 16, 12:54    [19266711]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
Владислав Колосов
Member

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

автор
то вывод Xml норм, такого плана


Не "норм", "красивое" форматирование Вам предоставляет клиент SSMS.
7 июн 16, 15:23    [19267549]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

Откуда:
Сообщений: 795
Владислав Колосов,

возможно ли, чтобы выходной файл с агента был такой же, как и в ssms?
7 июн 16, 15:40    [19267638]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
o-o
Guest
mishanya3624
возможно ли, чтобы выходной файл с агента был такой же, как и в ssms?

так может он и есть такой же.
вы в студии поди результат смотрите, она форматирует.
а сохраните в студии результат сразу в файл, без вывода в грид, поди то же и получите
7 июн 16, 15:57    [19267738]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

Откуда:
Сообщений: 795
o-o,

да, все так.
Так можно ли сохранять форматированный файл, как студия преобразует при открытии?
8 июн 16, 09:47    [19269691]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
Владислав Колосов
Member

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

Для чего, Вам за байты платят? Чем больше данных, тем выше зарплата?
8 июн 16, 11:54    [19270469]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

Откуда:
Сообщений: 795
Владислав Колосов,

нет:) чисто для красоты.
Всем спасибо.
хранимая процедура ---> задача в агенте ---> C# код на отправку ---> шедуллер
8 июн 16, 13:52    [19271239]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
Владислав Колосов
mishanya3624,

Для чего, Вам за байты платят? Чем больше данных, тем выше зарплата?
Ну да.
Заказчик требует, что бы между нодами были переводы строки, и платит за это деньги.
Причины разные - некомпетентность, желание смотреть XML в текстовом редакторе.

Не умеешь/не хочешь - идёшь лесом, найдут другого. Всех заказчиков не напосылаешся, таких больше половины.

Ну и смысла нет, трудно представить сейла, который уговаривает заказчика поменьше заплатить, исключив часть работы, потому что "у нас де программисты не любят XML с переводами строк"
8 июн 16, 13:55    [19271255]     Ответить | Цитировать Сообщить модератору
 Re: load xml to ftp  [new]
mishanya3624
Member

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

у меня нет заказчиков, работаю на себя:)
8 июн 16, 15:41    [19271878]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить