DIVERS DB2/400 en V4R30 ----------------------- deux nouvelles commandes CPYTOIMPF (copy to imported file) et CPYFRMIMPF (from imported file) permettent l'importation/exportation de fichiers physiques de/vers des fichiers à plat avec séparateurs (type CSV). Elles sont disponibles en V4R10 par le biais de PTF SF47138 et SF47177 (uniquement CPYTOIMPF) en V4R20 par le biais des PTF SF46976 et SF46911 (les deux commandes) |
ATTENTION , sur les premières versions de la 4.30, ces deux commandes ne fonctionnent pas, l'OS/400 réalisant des concaténations avec le symbole |, or il faut utiliser '!' en france. il faut charger au moins les PTF suivantes : SF53288, SF53383 et SF53384 et enfin SF52970 le principe est de générer un fichier "à plat" à partir d'un fichier BD (CPYTOIMPF) ou d'insérer des lignes venant d'une autre base (CPYFRMIMPF) la fonction CPYTOIMPF génère un fichier type CSV dans IFS. |
Copier dans fich importation (CPYTOIMPF) Indiquez vos choix, puis appuyez sur ENTREE. Fichier d'origine: Fichier . . . . . . . . . . . > AF4MBRP1 Nom Bibliothèque . . . . . . . . > AF400 Nom, *LIBL, *CURLIB Membre . . . . . . . . . . . . *FIRST Nom, *FIRST Fichier BD de destination: Fichier . . . . . . . . . . . Nom Bibliothèque . . . . . . . . *LIBL Nom, *LIBL, *CURLIB Membre . . . . . . . . . . . . *FIRST Nom, *FIRST Fichier STREAM de destination . > '/dbfimport/fichier.csv' Remplacement ou ajout enregs . . *ADD *ADD, *REPLACE Cela ressemble à une commande Copie mais vers un fichier en interne TOFILE vers un fichier "PC" (stream) TOSTMF |
viennent ensuite les critères de séparateurs et de format : Délimiteur d'enregistrement . . > *CRLF Valeur alpha, *EOR, *CRLF. Format fichier d'importation . . *DLM *DLM, *FIXED Délimiteur de chaîne . . . . . . '"' Valeur alpha, *NONE Délimiteur de zone . . . . . . . > ';' Valeur alpha Indicateur de zone indéfinie . . *NO *NO, *YES Symbole décimal . . . . . . . . > *COMMA *PERIOD, *COMMA Format de date . . . . . . . . . *ISO *ISO, *USA, *EUR, *JIS, *Y Format d'heure . . . . . . . . . *ISO *ISO, *USA, *EUR, *JIS Vous reconnaissez ici tout ce qui permet de constituer un fichier CSV. Quelques remarques : Avant la V5R10, la copie de déroulait en EBCDIC, cela n'était pas génant si vous souhaitiez télécharger le fichier via FTP, mais problématique autrement pour en faire un fichier au format ANSI (Windows LATIN-1) lancez : CPY OBJ('fichier.csv') TOOBJ('fichier2.csv') TOCODEPAGE(1252) DTAFMT(*TEXT) |
>le format généré est directment reconnu par les tableurs (extension .csv) >si vous souhaitez en faire un fichier texte, nous vous conseillons comme caractère séparateur la tabulation, indiquez x'05' (TAB en EBCDIC) qui devient x'09'(la tabulation en ANSI) lors de la conversion. >la copie peut se faire directementsur un serveur NT avec Netbios (pour un serveur UNIX, utilisez NFS) a/ vérifiez la configuration Netserver, particulièrement que votre AS/400 est dans le même domaine que votre Contrôleur de Domaine. b/ utilisez sur l'AS/400 un profil connu du PDC et ayant le même mot de passe dans les deux environnements. c/ tapez CPYTOIMPF FROMFILE(*LIBL/monfichier) TOSTMF('/QNTC/monserveurNT/nom-de-partage/fichier.csv) |
+ pour terminer, les commandes CPYFRMIMPF et CPYTOIMPF possédent de nouveaux paramètres en V5R10 : STMFCODPAG = pour le choix du code page lors des exportations. *PCASCII = 1252 => l'ANSI de MS-Windows *STDASCII = 850 => l'ASCII DOS. FLDDFNFILE = fichier de définition de zones, pour l'importation. ........................................................................... : Zone1 1 10 11 : : Zone2 12 15 16 : : *END : : ^ ^ ^ ^ : : ! \ ! ! : : nom de zone début fin position de l'indication val. nulle: :.........................................................................: ERRRCDFILE = fichier contenant les enregistrements en erreur. (fichier source dont la longueur est au moins celle du fichier base de données plus 1 octet par zone + 813) RPLNULVAL = remplace les valeurs nulles par les valeurs par défaut. |