Конференция "Базы" » Данные формата txt в таблицу MSSQL [D4, D6, MSSQL]
 
  • Alexandra (29.07.08 07:43) [0]
    Суть такова : на ftp сервере автоматом  создаются  каждые 15 минут файлы формата txt, их надо раз в день импортировать в одну и туже таблицу, и так изо дня в день в эту же таблицу. Если файлы уже были импортированы, то брать уже последующие файлы.
    Вопрос: сможет ли DTS справится с этим ?  Если да, то как сделать чтобы она брала файлы только в названии которых есть слово "ccr" , и как настроить чтобы она брала файлы за опред-ый день. Если же DTS не справится , то что надо для того чтобы решить эту задачу ? Спасибо.
  • Vlad Oshin © (29.07.08 09:16) [1]

    > сможет ли DTS справится с этим ?

    не знаю, но D6 сможет


    > как сделать чтобы она брала файлы только в названии которых
    > есть слово "ccr" , и как настроить чтобы она брала файлы
    > за опред-ый ден

    FindFirst FindNext +маска +аттрибуты файла
  • Ega23 © (29.07.08 09:21) [2]

    > сможет ли DTS справится с этим


    По-идее - должно, для таких задач и делалось. Как конкретно - тебе лучше на sql.ru в MSSQL спросить.
  • Alexandra (29.07.08 12:27) [3]
    Vlad Oshin, подскажите с чего начать чтобы сделать при помощи D6?
  • Плохиш © (29.07.08 13:41) [4]

    > Alexandra   (29.07.08 12:27) [3]
    > подскажите с чего начать чтобы сделать при помощи D6?

    Начать надо с найма программиста...
  • stas © (29.07.08 13:41) [5]
    Есть процедура вычисления размера папки, (она рекурсивная в вашем случае рекурсия ненужна) используя ее как пример можете написать свою

    > function GetDirectorySize(const Path: string): Int64;
    > var
    >  FD : TWin32FindData;
    >  FH : THandle;
    >  TempSize: TULargeInteger;
    >  SR:TsearchRec;
    > begin
    >  Result := 0;
    >  if Path='' then exit;
    >  if not(DirectoryExists(Path)) then exit;
    >  FH := FindFirstFile( PChar( Path + '*.*' ), FD );
    >  repeat
    >    if (FH<>INVALID_HANDLE_VALUE) and (FD.cFileName <> string('.
    > ')) and
    >                                               (FD.cFileName<>string('.
    > .')) then
    >      begin
    >        if (FILE_ATTRIBUTE_DIRECTORY and FD.dwFileAttributes)
    > <> 0 then
    >          Inc(Result, GetDirectorySize(Path + FD.cFileName
    > + '\'))
    >        else
    >          begin
    >            TempSize.LowPart := FD.nFileSizeLow;
    >            TempSize.HighPart := FD.nFileSizeHigh;
    >            Inc(Result, TempSize.QuadPart);
    >          end;
    >      end;
    >  until FindNextFile(FH,FD) = false;
    > FindClose (SR);
    > end;
  • stone (29.07.08 15:28) [6]

    > Вопрос: сможет ли DTS справится с этим ?

    Смотря что ты там пропишешь.

    > Если да, то как сделать чтобы она брала файлы только в названии
    > которых есть слово "ccr" , и как настроить чтобы она брала
    > файлы за опред-ый день.

    есть такая процедура xp_cmdshell
    правильное ее использование в паре с BULKINSERT
    может выполнить твою задачу
  • Vlad Oshin © (30.07.08 11:51) [7]

    > с чего начать чтобы сделать при помощи D6?



    > FindFirst FindNext

    +F1

    TadoConnection +F1
    TadoXXX +F1

    www.ya.ru + TadoConnection
    www.ya.ru + TadoXXX
    www.ya.ru + +Delphi +FindFirst +маска +пример
  • Павел Калугин © (30.07.08 18:20) [8]
    Пишется сервис который если нашел файл, соответствующий условиям в директории натравливает на него ДТС пакет (или парсит сам и в базу закорачивает) и перекладывает обработаный файл в соседнюю директорию.
    Потенциальная грабля - процесс сохранения файла растянут во времени.
  • Павел Калугин © (30.07.08 18:22) [9]
    и еще одна грабля  Если в 8 первыз строках (в настройках можно докрутить до 16) в поле нет данных то данное поле при импорте дтс пакетом останется пустым для всего файла
 
Конференция "Базы" » Данные формата txt в таблицу MSSQL [D4, D6, MSSQL]
Есть новые Нет новых   [134435   +35][b:0][p:0]