Передача данных из IBM i (AS400) экспорт нескольких файлов

Я использую инструмент передачи данных для экспорта файлов из AS400 в CSV. Имея более 500 файлов для экспорта, я надеялся, что будет способ сделать это для нескольких файлов одновременно.

Я попытался сохранить параметры передачи как .TTO, но я по-прежнему могу работать только с одним файлом за раз. Я мог бы использовать .bat для выполнения нескольких файлов .TTO, но мне все равно нужно было бы создать .TTO для каждого файла.

Любые идеи очень приветствуются.


person zack    schedule 08.11.2017    source источник


Ответы (2)


Я не знаю какой-либо команды, которая делает это, или какого-либо стороннего инструмента в этом отношении, но если вы хотите написать программу .bat для этого, почему бы не использовать программу CL с CPYTOIMPF для перебора имен файлов. и запишите CSV в IFS. Если вы правильно настроите QNTC, это может быть направлено даже на общий сетевой ресурс.

Вот пример кода:

pgm
  dclprcopt  log(*no) +
             dftactgrp(*no) actgrp(*new)

  dclf explstf
  dcl  &ifspath      *char  64  value('/ifspath/')
  dcl  &ifsname      *char  64

  dowhile cond('1')
    rcvf
    monmsg msgid(CPF0864) exec(leave)

    chgvar &ifsname (&ifspath |< &filename |< '.csv')
    cpytoimpf  fromfile(&filelib/&filename) +
                 tostmf(&ifsname) mbropt(*replace) +
                 stmfccsid(*pcascii) +
                 rcddlm(*crlf) dtafmt(*dlm) +
                 strescchr(*strdlm) rmvblank(*trailing)
  enddo

out:
endpgm

&filename и &filelib будут полями в файле explstf.

ПРИМЕЧАНИЕ. CPYTOIMPF не требует специального файла определения, поэтому вы можете использовать его с более чем 500 файлами без особых усилий.

person jmarkmurphy    schedule 08.11.2017
comment
Определенно есть что сказать об использовании инструментов, поставляемых с системой, и CPYTOIMPF прошел долгий путь с момента моего первого знакомства с ним (в V5R2). В то время он не только не генерировал вывод, удобный для Excel, но также требовал огромных объемов рабочей памяти и занимал много времени для выполнения. (Выполнение задачи на Python было быстрее.) В наши дни это может быть или не быть более эффективным; Я не проверял. И у него могут быть или не быть проблемы с некоторыми числовыми крайними случаями. - person John Y; 09.11.2017
comment
Когда-то, в V4, я написал свою собственную замену для CPYTOIMPF и CPYFRMIMPF в RPG со встроенным SQL. Но я бы не стал этого делать сегодня. Встроенные инструменты слишком просты в использовании, и у меня больше нет проблем с их выводом. - person jmarkmurphy; 09.11.2017

Вероятно, не по теме для SO...

Но взгляните на команду Копировать в файл импорта (CPYTOIMPF) в сеансе 5250.

person Charles    schedule 08.11.2017