Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Импорт данных с FTP сервера в SQL Server  [new]
uchenik21
Guest
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2) (VM)
Есть текстовый файл который еженедельно нудо перезаписывать в таблицу MSSQL Server. Раньше он лежал и обновлялся локально на том же сервере что и сикул, и это делалось просто процедурой которая запускалась в работе по рассписанию примерно так:
  SET @strSQL = 'INSERT INTO Table
                   (
                    [STR]
                   )  
                   SELECT  
                    a.[STR] 
                   FROM OPENROWSET (BULK '''+ @directoryPath +''', FORMATFILE = ''C:\FormatFiles\FormatFile1.fmt'') AS a '

   EXEC  (@strSQL)  

А сейчас текстовый файл выкладывают на FTP сервер у которого не анонимное соединение, а есть логин и пароль. Можно ли с помощью OPENROWSET забирать файл с ftp? Если можно не подскажите как это можно сделать? В BOL я к сожалению не нашел. Ну или как сделать импорт с ftp сервера в таблицу SQL Server?
27 май 10, 16:55    [8846554]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 456
uchenik21,

Возможно вам поможет SSIS пакет, там и отдельный FTP-task предусмотрен, специально для подобных задач.
27 май 10, 16:58    [8846576]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
uchenik21
Guest
SergePnb, спасибо про SSIS я буду иметь ввиду я уже видел FTP-task

но просто я думал можно это сделать можно проще и быстрее.
27 май 10, 17:20    [8846777]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 456
uchenik21,

А зачем? SSIS даст вам все что вы хотели плюс обработку ошибок, безопасность и пр. Да и не дело сервера поднимать FTP соединение, что-то качать, распаковывать и пр. Он ведь сервер баз данных, а не FTP клиент )) Если уж так хочеться делать все именно вызовом SP, то пишите сборку, правда это будет несколько более трудоемко чем использовать SSIS
27 май 10, 17:24    [8846824]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
san_d
Member

Откуда: Киев
Сообщений: 60
uchenik21,
есть еще вариант - xp_cmdshell + ftps.exe. Забираете файл с ftp, а дальше как и было через OPENROWSET
27 май 10, 17:37    [8846975]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
uchenik21
Guest
SergePnb, спасибо, наверно вы правы, но просто я не имел раньше дела с SSIS ... и что бы с легкостью делать пакеты надо много много почитать ещё мне :) . Я попробовал сделать вызвав ftp.exe через cmd , как написал мне san_d, вроде получилось скачать файл ... но как то не очень мне нравится такое решение. Наверно буду пробовать сделать это всетаки посредством SSIS. Но просто я хотел узнать: можно ли вообще получить файл с ftp через программу bcp, или операторы BULK INSERT и OPENROWSET?
27 май 10, 18:24    [8847315]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
uchenik21
Guest
uchenik21
SergePnb, спасибо, наверно вы правы, но просто я не имел раньше дела с SSIS ... и что бы с легкостью делать пакеты надо много много почитать ещё мне :) . Я попробовал сделать вызвав ftp.exe через cmd , как написал мне san_d, вроде получилось скачать файл ... но как то не очень мне нравится такое решение. Наверно буду пробовать сделать это всетаки посредством SSIS. Но просто я хотел узнать: можно ли вообще получить файл с ftp через программу bcp, или операторы BULK INSERT и OPENROWSET?

Получить в Сикул я имел ввиду , в таблицу
27 май 10, 18:26    [8847330]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 456
uchenik21,

На сколько я знаю bcp, bulk insert и пр. вам не помогут. А по поводу литературы могу подсказать ))) Pro SQL Server 2005 Integration Services by James Wightman, там разобрано большинство типичных task и задач, вероятно есть и перевод, но я его не видел.
27 май 10, 18:48    [8847434]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных с FTP сервера в SQL Server  [new]
лолл
Guest
Как вариант, можно разбить на две подзадачи: скачивание файла с фтп и его сохранение на сервере,а далее ваше прежнее решение. Первую часть можно реализовать с помощью OLE, либо сборку написать.
27 май 10, 20:26    [8847955]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Импорт данных с FTP сервера в SQL Server  [new]
gudus
Member

Откуда:
Сообщений: 25
Я делаю вот что,
DECLARE @maindir varchar(128) = 'e:\offence\in\'
DECLARE @FTPServer	varchar(128)='ftpserver';
DECLARE @FTPUser	varchar(128)='user';
DECLARE @FTPPWD	varchar(128)='passwd';
declare	@cmd varchar(200);
declare @workdir varchar(128) = @maindir + 'tmp\';
declare @workfilename varchar(12) = 'ftpcmd.txt';

set @FTPServer = replace(replace(replace(@FTPServer, '|', '^|'),'<','^<'),'>','^>')
set @FTPUser = replace(replace(replace(@FTPUser, '|', '^|'),'<','^<'),'>','^>')
set @FTPPWD = replace(replace(replace(@FTPPWD, '|', '^|'),'<','^<'),'>','^>')

set	@cmd = 'echo ' + 'open ' + @FTPServer+ ' > ' + @workdir + @workfilename
exec master..xp_cmdshell @cmd			
set	@cmd = 'echo '+ @FTPUser+ '>> ' + @workdir + @workfilename
exec master..xp_cmdshell @cmd
set	@cmd = 'echo '+ @FTPPWD+ '>> ' + @workdir + @workfilename
exec master..xp_cmdshell @cmd
set	@cmd = 'echo get ' +'директория + файл'+ '>> ' + @workdir + @workfilename
exec master..xp_cmdshell @cmd
set	@cmd = 'echo '+ 'quit'+ ' >> ' + @workdir + @workfilename
exec master..xp_cmdshell @cmd
set @cmd = 'ftp -s:' + @workdir + @workfilename
exec master..xp_cmdshell @cmd
6 окт 11, 15:28    [11395625]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить