> Tech > Transférer des données de SQL Server à  l’AS/400

Transférer des données de SQL Server à  l’AS/400

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Utiliser DTS pour transférer des données de SQL Server à  l'AS/400 est plus lourd que d'importer des données AS/400 dans SQL Server. Et on ne peut pas utiliser les mêmes simples techniques du genre pointer et cliquer. Heureusement, DTS est suffisamment souple pour procéder à  tous les ajustements nécessaires pour

transférer
des données SQL Server à  l’AS/400.
Comme pour importer des données
de l’AS/400 dans SQL Server, pour exporter
des données vers l’AS/400, il
faut construire un package DTS en démarrant
le Import/Export Wizard.
Dans l’écran de sélection de source
de données que montre la figure 6, on
utilise la boîte déroulante Data Source
pour sélectionner le Microsoft OLE DB
Provider for SQL Server pour se
connecter au système SQL Server.
Dans le champs Server, entrez le nom
du système SQL Server qui contient la
base de données source (dans la figure
6
, c’est TECA4). Ensuite, sélectionnez
la méthode d’authentification. Cet
exemple utilise l’authentification
Windows pour se connecter au SQL
Server. La boîte déroulante Database
montre que la base de données SQL
Server Northwind contient les tables à 
transférer.
Après avoir spécifié la source de
données, un clic sur Next affiche la
boîte de dialogue Choose a destination
illustrée figure 7. Dans la boîte déroulante
Destination, j’ai choisi le Client
Access ODBC Driver (32-bit) pour se
connecter à  l’AS/400 ; DTS utilisera le
nom de source de données S1030438 pour obtenir les propriétés de
connexion spécifiques, dont le nom de
l’AS/400 auquel on veut se connecter.
Dans les champs Username et
Password, fournissez l’ID utilisateur et
le mot de passe que DTS utilisera pour
se connecter à  l’AS/400. Là  encore, si
vous avez défini votre DSN pour qu’il
utilise l’information login Windows,
vous pouvez omettre ces paramètres.
Un clic sur Next affiche la boîte de dialogue
Specify Table Copy or Query, qui
vous offre le choix suivant : transférer
en utilisant une requête ou en copiant
une table entière. Choisissez de copier
une table et cliquez sur Next pour afficher
l’écran que montre la figure 8.
Sur cet écran, j’ai sélectionné la
table Customers de la base de données
Northwind exemple de SQL Server.
Jusque là , cette préparation a été identique
à  l’exemple antérieur de transfert
des données dans SQL Server. Mais les
similitudes s’arrêtent là . On se souvient
que l’AS/400 a utilisé un schéma
de nommage en trois parties pour
identifier les fichiers. Dans la figure 8,
bien que le DTS ait généré un nom en
trois parties pour la table, il est constitué
du DSN, du nom d’utilisateur (au
lieu du nom de bibliothèque) et de la
table cible. Ce type de schéma de nommage
ne conviendra pas pour des
transferts vers l’AS/400, sauf s’il se
trouve que la bibliothèque cible a le
même nom que l’utilisateur. C’est rarement
le cas, donc il vous faudra remplacer
la section médiane du nom par
la bibliothèque AS/400.
En outre, le nom de destination
que l’on voit ici est initialement mis
entre guillemets. Le provider SQL
Server OLE DB enlève les guillemets,
contrairement à  l’IBM Client Access
ODBC Driver. Si vous avez utilisé ces
valeurs par défaut, les tables transférées
auront des caractères inclus entre
guillemets dans leurs noms d’objets
AS/400. Heureusement, le DTS
Import/Export Wizard vous permet
d’éditer manuellement les noms de
tables de destination générés en amenant
simplement le curseur sur le nom
et en tapant par-dessus la valeur existante.
La première étape de personnalisation
de ce package DTS pour qu’il
fonctionne avec l’AS/400 consiste à  enlever
tous les caractères guillemets
puis à  insérer le nom d’objet en trois
parties correct que le Client Access
ODBC Driver utilise. La figure 8
montre ces changements effectués
dans la colonne Destination : j’ai enlevé
les guillemets et utilisé le nom en
trois parties pour toutes les tables.
Dans cet exemple, DTS copiera la table
Customer dans le système AS/400 identifié
par le DSN S1030438 et dans une
bibliothèque nommée QGPL.
L’étape suivante consiste à  ajuster
les types de données et les noms de colonnes
pour chaque table à  transférer.
Un clic sur le bouton Transform à 
droite de la colonne Destination vous
permet de personnaliser les types de
données que DTS utilisera quand il
construira la table cible. La figure 9
montre la boîte de dialogue Column
Mappings and Transformations qui apparaît
quand on clique sur le bouton
Transform.
Sur l’onglet Column Mappings, on
peut changer les types de données
pour chaque colonne. Pour changer le
type de données de destination sur
l’onglet Column Mappings, cliquez sur
la valeur affichée dans la colonne Type.
Une boîte s’ouvre pour vous permettre
de modifier le type de données de destination.
Le tableau 2 montre comment
les types de données SQL Server correspondent
aux types de données
AS/400. Ensuite, si vous créez une nouvelle
table sur l’AS/400 cible, cliquez
sur le bouton Edit SQL pour afficher la
boîte de dialogue Create Table SQL
Statement qu’illustre la figure 10. Là ,
vous pouvez changer l’instruction SQL
que l’Import/Export Wizard a générée
pour respecter la syntaxe SQL à  laquelle
s’attend l’AS/400.
L’Import/Export Wizard génère initialement
l’instruction CREATE TABLE
SQL que DTS enverra à  l’AS/400. Le wizard
travaille avec des drivers ODBC
pour déterminer les types de données
corrects, mais j’ai constaté qu’il se
trompe souvent. Toutefois, vous pouvez
modifier librement cette instruction
SQL. Pour permettre l’export de
DTS vers l’AS/400, enlevez les guillemets
de part et d’autre du nom de
table qualifiée et de chaque nom de
colonne. Puis, supprimez les éventuelles
parenthèses que l’Import/
Export Wizard ajoute aux types de données
numériques. Si vous n’enlevez
pas les guillemets, DTS créera les colonnes
dans le fichier de destination
AS/400 en considérant que les caractères
guillemets font partie du nom du
champ. Vous devez supprimer les parenthèses
après les types de données
numériques pour éviter de générer le
message d’erreur de syntaxe SQL
SQL0104 – Token was not Valid quand
le package DTS s’exécute.
Il faut aussi veiller à  utiliser les
types de données corrects. Si le wizard
n’a pas généré les bons types ou tailles,
vous devez les ajuster manuellement
dans l’instruction CREATE TABLE. La figure
10
montre l’instruction SQL sur le
point d’être changée. Les six premières
colonnes ont eu les guillemets enlevés
; les colonnes Region, PostalCode
et Country contiennent leurs valeurs
d’origine.
Après avoir effectué les ajustements
sur les noms de tables de destination
et les types de données, cliquez
sur Next pour afficher les deux boîtes
de dialogue Import/Export Wizard qui
vous permettent de sauvegarder le
package DTS et de programmer son
exécution. Si l’on choisit d’exécuter le
package DTS immédiatement, le transfert
vers l’AS/400 démarre. Une barre
permet de suivre sa progression ; les
cases à  cocher dans la partie inférieure
de la boîte de dialogue indiquent
quelles étapes dans le package DTS ont
été couvertes.
Dans le cas de transferts DTS à  fichiers
multiples, vous constaterez rapidement
que DTS n’exécute pas les étapes du package une à  une. En effet,
DTS est multithreaded, ce qui signifie
que, par défaut, il lance simultanément
quatre threads. Bien que cela fonctionne
généralement, j’ai parfois
constaté des erreurs quand une ou
plusieurs étapes du transfert échouent
lors de transferts DTS multithreaded
vers l’AS/400. Si vous avez l’intention
d’utiliser le package DTS sans assistance,
je vous conseille de modifier les
propriétés du package DTS et de
mettre le threading DTS par défaut à  1,
afin que le package n’exécute qu’une
instruction SQL à  la fois.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010