2016-10-26 1 views
0

Je pense que l'en-tête, il explique tout: Y at-il un bon moyen de créer et charger des instantanés hors ligne de schéma de base de données à l'aide SchemaCrawler sans utiliser la ligne de commande? Si oui, pouvez-vous fournir un exemple de code/lien s'il vous plaît? Sinon, un exemple de code java pour utiliser les options de la ligne de commande serait utile aussi (je n'ai pas beaucoup d'expérience avec ça)!Comment utiliser les profils instantanés hors ligne de code Java dans SchemaCrawler

Merci pour tout type d'aide!

PS: J'ai réussi à créer l'instantané en ligne avec ce code:

final SchemaCrawlerOptions options = new SchemaCrawlerOptions(); 
    // Set what details are required in the schema - this affects the 
    // time taken to crawl the schema 
    options.setSchemaInfoLevel(SchemaInfoLevelBuilder.standard()); 
    options.setRoutineInclusionRule(new ExcludeAll()); 
    options.setSchemaInclusionRule(new RegularExpressionInclusionRule(/* some regex here*/)); 
    options.setTableInclusionRule(new RegularExpressionExclusionRule(/*some regex here*/)); 

    outputOptions.setCompressedOutputFile(Paths.get("./test_db_snapshot.xml")); 
    final String command = "serialize"; 

    final Executable executable = new SchemaCrawlerExecutable(command); 
    executable.setSchemaCrawlerOptions(options); 
    executable.setOutputOptions(outputOptions); 
    executable.execute(getConnection()); 

Je ne sais pas comment se connecter à cependant.

Répondre

0

Vous devez utiliser le schemacrawler.tools.offline.OfflineSnapshotExecutable avec un schemacrawler.tools.offline.jdbc.OfflineConnection pour vous «connecter» à votre snapshoot de base de données.

S'il vous plaît jeter un oeil sur le code suivant: vous OfflineSnapshotTest.offlineSnapshotExecutable()

Et @ZidaneT, pour charger un instantané hors ligne, utilisez le code comme ça dans LoadSnapshotTest.java

Sualeh Fatehi, SchemaCrawler

+0

Merci pour votre répondre! En fait, je suis tombé sur ce test si ce fut l'un de mes tentatives (aurait pu écrire tout de suite à droite?), Mais j'ai vu que le constructeur OfflineSnapshotExecutable est effectivement protégé, donc je ne peux pas y accéder (du moins pas dans un paquet) . Cette visibilité est-elle souhaitée pour une raison quelconque ou est-ce juste un bug? – ZidaneT

+0

Vous êtes peut-être la première personne à essayer d'utiliser ce programme de cette manière. Je vais le rendre public et publier une nouvelle version de SchemaCrawler. S'il vous plaît entrer dans un problème GitHub pour le suivre. Merci. –

+0

@ZidaneT - s'il vous plaît utiliser SchemaCrawler 14.10.06, qui a un constructeur public 'OfflineSnapshotExecutable' –