Ne vous inquiétez pas, 20 millions d'enregistrements sont un petit nombre pour PDI, et vous ne verrouillerez pas la table si elle est ouverte pour l'entrée. C'est pourquoi le Bulk load
est pour la table de sortie et non pour les tables d'entrée.
Cependant, un piège classique est l'option Truncate table
sur la table de sortie. Si vous exécutez (par inadvertance ou pour un traitement parallèle) deux fois l'étape de sortie, chacun verrouille l'autre. Pour toujours. Pour accélérer: Vous pouvez utiliser la case à cocher Lazy conversion
en entrée, afin que les données restent au format octet jusqu'à leur utilisation. Mais je ne suis pas sûr que vous gagniez quelque chose sur une simple table d'entrée/sortie. Si quelque chose de mal se produit avec des dates ou des blobs sur l'écriture sur le fichier de sortie, le message d'erreur sera assez cryptique.
Vous pouvez également augmenter la vitesse de la sortie en augmentant la taille de commit (pire quelques essais dans Oracle), et en augmentant le number of rows in row set
qui augmentera le nombre de lignes lues par le table input
. Pour ce faire, faites un clic droit n'importe où puis Properties/Miscelanous
.
Quelque chose que je conseille vraiment de faire, est d'augmenter la taille de la mémoire JVM. Utilisez un éditeur (bloc-notes ou mieux) pour modifier le fichier nommé spoon.bat
. Vous trouverez autour de la ligne 94-96 une ligne contenant quelque chose comme "-Xmx256K". Changez-le en "-Xmx4096M" (où 4096 est la moitié de la taille de la RAM de votre machine).
Effectuer un "traitement par lots" a plusieurs significations. L'un d'eux étant Make the transformation database transactional
. Ce que vous pouvez faire avec la case à cocher juste en dessous de Number of row in rowset
mentionné ci-dessus (et buggily orthographié comme Make the transformation database
dans la dernière version de PDI). Si cette case est cochée, si quelque chose ne va pas, l'état des bases de données est annulé comme si la transformation n'avait jamais été exécutée. Mais je ne conseille pas de le faire dans votre cas.