Je dois synchroniser la base de données MSSQL avec la base de données MYSQL. (> 500 tables et total> 10000000 lignes).
J'ai une solution de travail, mais la performance n'est pas acceptable.
Le goulot d'étranglement peut être ici:Sortie Groovy SQL au format eachRow
Je lis de la base de données MSSQL avec
mssqlDaten = mssql.eachRow (....) { row_data -> ...
à cause des noms de domaine en évolution dans les différents tableaux que je utilise une boucle pour créer l'instruction d'insertion
str = "insert into current_table values ("
for (over all fields from the current table) {
str += "'" + row_data[i] + "', "
}
str += ")"
mssql.execute (str)
Cela peut être le problème pour chaque ligne que je dois passer à travers la boucle.
A quelqu'un une idée pour obtenir les données de ligne directement dans le format (ValueField1, ValueField2, ....). Lorsque j'imprime les données de ligne maintenant, j'obtiens (NameField1: ValueField1, NameField2.ValueField2, ...).
pourrait vous fournir des schémas pour les tables de source et de destination? –
les schémas sont identiques, parce que je crée les tables incluent tous les champs et datatyps avec le code avant que je commence à écrire les données. – Helge
Ne pouvez-vous pas faire quelque chose comme 'insert into mytable select * from mytable', pas sûr comment vous liez vos schémas dans mysql mais dans Oracle vous auriez un lien de base de données de sorte que la mise à jour ressemblerait plus à' insert into mytable select * De dblinked.mytable', vous pouvez interroger toutes les tables à partir de INFORMATION_SCHEMA.TABLES peut-être (https://dev.mysql.com/doc/refman/5.7/en/tables-table.html) puis parcourir chaque et exécuter insert –