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

Откуда:
Сообщений: 5
SET @bcpCommand = 'bcp "' + @SQLCode + '" queryout '
SET @FilePath = ?
SET @OutputFile = @DateGet
SET @bcpCommand = @bcpCommand + @FilePath + @OutputFile + ' -c -t, -T -S HOVO-PC\ASACC14'
exec master..xp_cmdshell @bcpCommand




Как экспортировать файл в эту папку (FTP folder - ftp://173.249.12.81/ )

Спасибо
22 мар 19, 10:27    [21840408]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
Serп
Member

Откуда:
Сообщений: 17
Hovo Avanesyan,

как вариант:
Declare 
		@command nvarchar(2000),
		@ftpcommand varchar(4000),
		@FS int, 
		@OLEResult int, 
		@FileID int


	   
set @ftpcommand = 'login
pass
put '+@FilePath + @OutputFile+'
quit';

EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUTPUT
execute @OLEResult = sp_OAMethod @FS,'CreateTextFile',@FileID OUTPUT, 'c:\temp\PutFile.txt'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', NULL, @ftpcommand
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS 	
set @Command = N'ftp -s:c:\temp\PutFile.txt 173.249.12.81'
EXEC xp_cmdshell @command
22 мар 19, 10:54    [21840441]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
aleks222
Member

Откуда:
Сообщений: 923
Hovo Avanesyan
SET @bcpCommand = 'bcp "' + @SQLCode + '" queryout '
SET @FilePath = ?
SET @OutputFile = @DateGet
SET @bcpCommand = @bcpCommand + @FilePath + @OutputFile + ' -c -t, -T -S HOVO-PC\ASACC14'
exec master..xp_cmdshell @bcpCommand



Как экспортировать файл в эту папку (FTP folder - ftp://173.249.12.81/ )

Спасибо


1. Выгружаем файл на локальный диск.
2. Любым клиентом FTP копируем его на FTP-сервер.
3. PowerShell - выбор настоящего джигита.
22 мар 19, 11:09    [21840463]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
Hovo Avanesyan
Member

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

Xml генерируется при работе stored procedure автоматически.
На локальный диск без проблем работает. Можно прямим обращаться к ftp и экспортировать туда ?

Вот пример
USE [Raf_Flor_Trade]
GO
/****** Object:  StoredProcedure [dbo].[asp_deleteMT]    Script Date: 3/21/2019 7:31:32 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[asp_deleteMT]   @MTID int , @TS varbinary(8) , @RowCount int OUTPUT   AS     


DECLARE @Unit nvarchar(max) = ISNULL((SELECT fUNIT FROM MATERIALS WHERE fMTID = @MTID), '')
DECLARE @Group nvarchar(max) = ISNULL((SELECT fGROUP FROM MATERIALS WHERE fMTID = @MTID), '')
DECLARE @GCaption nvarchar(max) = ISNULL((SELECT fCAPTION FROM MTGROUP WHERE fCODE = @Group),'')
DECLARE @UCaption nvarchar(max) = ISNULL((SELECT fCAPTION FROM QNTUNIT WHERE fCODE = @Unit),'')
DECLARE @Caption nvarchar(max) = ISNULL((SELECT fCAPTION FROM MATERIALS WHERE fMTID = @MTID),'')
DECLARE @Code nvarchar(max) = ISNULL((SELECT fMTCODE FROM MATERIALS WHERE fMTID = @MTID),'')
DECLARE @Discount nvarchar(max) = ISNULL((SELECT fDISCOUNT FROM MATERIALS WHERE fMTID = @MTID),'')
DECLARE @Price nvarchar(max) = ISNULL((SELECT fPRICE FROM PRICES WHERE fMTID = 100912 AND fDATE =  (SELECT MAX(fDATE) FROM PRICES WHERE fMTID = @MTID) AND fPRICETYPE = '02'), '')
DECLARE @GetDate nvarchar(max) = REPLACE(REPLACE(REPLACE(convert(varchar, getdate(), 121), ':', ''), '.', ''), ' ', '')
DECLARE @DateGet nvarchar(max) = @GetDate + '.xml'
DECLARE @OutputFile NVARCHAR(100) ,    @FilePath NVARCHAR(100) ,    @bcpCommand NVARCHAR(1000)



DECLARE @SQLCODE nvarchar(4000) =
'SELECT ''Delete'' AS [Type], ''' + @Code + ''' AS Code, N''' + @Caption + ''' AS Name, ''' + REPLACE(@Unit,' ','') + ''' AS UnitCode, N''' + @UCaption + ''' AS UnitName, ''' + REPLACE(@Group,' ','') + ''' AS GroupCode, N''' + @GCaption + ''' AS GroupName, ''' +convert(varchar, @Price)+ ''' AS Price, ''' +convert(varchar, @Discount)+ ''' AS Discount FOR XML PATH (''ROW''), ROOT (''ROWS'')'


SET @bcpCommand = 'bcp "' + @SQLCode + '" queryout '
SET @FilePath = 'C:\aaa\' -- как поменять на ftp folder
SET @OutputFile = @DateGet
SET @bcpCommand = @bcpCommand + @FilePath + @OutputFile + ' -c -t, -T -S HOVO-PC\ASACC14'
exec master..xp_cmdshell @bcpCommand

DELETE FROM MATERIALS     WHERE fMTID = @MTID AND fTS = @TS     SET @RowCount = @@ROWCOUNT 
22 мар 19, 11:17    [21840473]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
aleks222
Member

Откуда:
Сообщений: 923
Hovo Avanesyan
Можно прямим обращаться к ftp и экспортировать туда ?

Канешно можно.

BCP доступен в сборках .NET.
FTP клиент - тоже там есть.

Делоффф то. Берешь и пишешь программулину.
22 мар 19, 14:06    [21840766]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
court
Member

Откуда:
Сообщений: 1986
Hovo Avanesyan
Можно прямим обращаться к ftp и экспортировать туда ?


это, походу, ищешь - Команда FTP
Только учти, с этим есть веский "ньюанс" :)
автор
Как видно из списка перечисленных команд, стандартный клиент FTP в операционных системах Windows поддерживает далеко не полный перечень стандартных ftp-команд и, что самое неприятное, он не поддерживает команду переключения в пассивный режим ( passv ) обмена с сервером FTP, что делает его непригодным для обмена данными с серверами FTP, подключение к которым выполняется с использованием технологии трансляции сетевых адресов NAT. Другими словами, для обмена файлами с внешними, по отношению к подсети клиента, серверами, стандартный FTP-клиент не подходит. Это касается всех версий Windows, включая и Windows 10. Именно этот факт предопределяет область использования утилиты ftp.exe - только в локальных сетях, где возможно прямое TCP-соединение между клиентом и сервером.
22 мар 19, 14:24    [21840803]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
court
Member

Откуда:
Сообщений: 1986
собственно, выше - 21840441, это уже и показали
22 мар 19, 14:26    [21840811]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
Serп
Hovo Avanesyan,

как вариант:
Declare 
		@command nvarchar(2000),
		@ftpcommand varchar(4000),
		@FS int, 
		@OLEResult int, 
		@FileID int


	   
set @ftpcommand = 'login
pass
put '+@FilePath + @OutputFile+'
quit';

EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUTPUT
execute @OLEResult = sp_OAMethod @FS,'CreateTextFile',@FileID OUTPUT, 'c:\temp\PutFile.txt'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', NULL, @ftpcommand
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS 	
set @Command = N'ftp -s:c:\temp\PutFile.txt 173.249.12.81'
EXEC xp_cmdshell @command


СПАСИБО ВАМ за этот вариант!
Пригодилось!)
Вопрос правда есть - как изменить папку в которую записывается файл, т.е копировать не в корень "173.249.12.81", а например в
"173.249.12.81/public_html/zub/tmp/stockTEST.csv"
28 ноя 19, 17:27    [22028007]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
-SWAN-

СПАСИБО ВАМ за этот вариант!
Пригодилось!)
Вопрос правда есть - как изменить папку в которую записывается файл, т.е копировать не в корень "173.249.12.81", а например в
"173.249.12.81/public_html/zub/tmp/stockTEST.csv"


Воспользоваться гуглом.

Например:https://ab57.ru/cmdlist/ftp.html

Вам, видимо, нужно в перечень команд добавить cd с путем к нужному каталогу.
28 ноя 19, 17:41    [22028026]     Ответить | Цитировать Сообщить модератору
 Re: Export xml файл на папку FTP  [new]
-SWAN-
Member

Откуда: Оделся, обулся - и на работу вернулся!)
Сообщений: 207
Minamoto,
Спасибо за подсказку!
Всё получилось)))
29 ноя 19, 11:52    [22028613]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить