2017-08-09 1 views
0

J'ai quelques scripts SQL ms que je voudrais migrer vers bouilloire. Idéalement, ce que je voudrais faire, c'est que chaque étape du script soit une étape unique dans la marmite. Mais je trouve difficile d'envelopper ma tête autour des instructions SQL ms et l'étape de la bouilloire connexe. Quelqu'un pourrait-il s'il vous plaît préciser sur quelle étape de la bouilloire qui peut être utilisé pour effectuer les opérations suivantes:Transition de MS SQL à Pentaho Kettle

  1. select * from [tableau] - Celui-ci est évidemment [Input-> entrée de table]
  2. ALTER TABLE [Tableau] AJOUTER [fieldname] [nvarchar] (255)
  3. UPDATE b SET b.b_field = a.a_field à partir de [table_a] un INNER JOIN [table_b] b ON droite (b.b_identity, 19) = a.a_identity où b.b_field est null

L'étape 3 est répétée avec beaucoup d'autres tables différentes avec différents champs comparés.

Merci.

Répondre

1

Vous ne pouvez pas simplement le traduire étape par étape. Remplacez la fonctionnalité, mais vous ne pouvez pas simplement mapper les étapes SQL aux étapes PDI. C'est un paradigme complètement différent.

0

Comme moyen simple et rapide de migrer des scripts SQL vers Kettle, vous avez l'étape SQL Execute script, dans laquelle vous pouvez copier/coller votre script tel quel.

Toujours sur le mode rapide et sale, notez que vous pouvez mettre plus d'une instruction dans le Table Input, à condition qu'ils soient séparés par une virgule. Vous pouvez même créer une table temporaire avec SELECT INTO, les indexer et en lire des extraits.

Mais évidemment ce n'est pas vraiment propre. Pour (2), vous pouvez produire un flux contenant le nom de table et le nom de champ, puis utiliser une étape Javascript pour écrire une colonne contenant le texte "ALTER TABLE [nom_table] ADD [nom_zone] NVARCHAR (255) ", puis un Dynamic SQL row pour exécuter cette instruction pour chaque ligne d'entrée. Pour (3) le principe est de créer le flux d'entrée avec un Table Input avec un "SELECT a.a_field FROM [table_a] un INNER JOIN [table_b] b SUR DROITE (b.b_identity, 19) = a.a_identity ". Et puis pour mettre à jour table_b avec une étape Update. Je ne peux pas vraiment aider car je ne vois pas la touche b pour la mise à jour. Lorsque ceci est fait et testé pour une table et un champ, vous pouvez mettre ces valeurs dans les paramètres, et utiliser un Job pour boucler les paramètres.

Vous avez un exemple de ce cas d'utilisation dans le sample directory qui a été fourni avec votre distribution. Il se trouve dans le même dossier que votre spoon.bat, et le travail qui vous intéresse est samples/transformations/dynamic-table/Dynamic table creation and population.kjb.