transférer des données d'une database à une autre

J'ai d'énormes quantités de données dans une database et j'ai besoin de transférer ces données vers un autre server. J'utilise SerializeJSON pour écrire datatables dans des files, cela a bien fonctionné pour de plus petites quantités de données mais maintenant je suis à court d'erreurs de memory. Les servers de database ne sont pas dans le même réseau. Ils ne peuvent pas se «voir», c'est pourquoi je veux transférer datatables dans des files.

Des idées sur la façon dont je peux transférer des données d'une database à l'autre en utilisant des files et ColdFusion?

Votre question donne l'printing que le MOO est en train d'écrire des données. Peut-être en essayant d'écrire un set d'loggings entier. Au lieu de cela, vous avez probablement besoin d'écrire un algorithm qui itère à travers les pages de données – ROW_NUMBER de SQL Server (ORDER BY x, y, z) est la bonne approche pour cela. Vous pouvez ensuite écrire plusieurs files ou utiliser fileWrite (fileObj, données) pour créer un file volumineux – ce dernier format vous obligeant probablement à utiliser un format autre que JSON, tel que CSV.

Maintenant, si le problème concerne l'insertion de données, il y a un bug avec ColdFusion et une boucle sur les instructions SQL . Fondamentalement, vous devez placer <cfquery>INSERT...</cfquery> intérieur de <cfthread/> lors d'une boucle répétée.

Enfin, si vous rencontrez des problèmes en lisant datatables d'un file, vous devez effectuer des lectures en memory tampon. Dans ce cas, vous devrez soit utiliser CSV comme format de serialization, soit utiliser un parsingur XML SAX, si vous utilisez XML, mais je ne suis pas au courant d'un parsingur JSON qui lit de façon tamponnée.

La façon dont j'aborderais ceci est de couper le server d'application (ColdFusion) et d'essayer de lancer le process en utilisant DTS . L'idée consiste à exporter les lignes de database spécifiques de chaque table sous la forme d'une export unique, que vous pouvez ensuite importer dans l'autre database.

Regardez donc votre schéma et élaborez les tables que vous devez interroger, et écrivez ces requêtes pour chaque table. Selon les keys primaires de la nouvelle database, vous devrez peut-être modifier vos instructions d'import pour éviter d'insert la key primaire et laisser la database s'occuper de cela – et vous devrez ajuster les autres imports référençant cette key primaire.

C'est un travail difficile et je pense que vous devriez le faire à la main en utilisant des outils de database tels que DTS.

J'espère que ça aide.

Jetez un oeil à Jailer . C'est une application graphique basée sur Java qui vous permet de sélectionner des tables spécifiques d'une database et d'exporter datatables en fonction de certains critères. Cela fonctionne très bien et c'est facile à utiliser.

Si vous avez SQL Server Management Studio, pourquoi ne pas créer un file de sauvegarde complet, toutes datatables, puis exécuter une restauration sur la nouvelle database. Cela devrait restaurer tous les schémas, tables et données.

hth, larry