web-dev-qa-db-fra.com

Exécution d'un fichier de script dans la base de données H2

Tout d'abord, je voudrais dire que je suis nouveau dans la base de données H2. J'ai besoin d'exécuter un fichier de script sql dans la base de données h2. J'ai un fichier de script test.sql et je veux l'exécuter dans la base de données h2. C'est possible?

53
elvisanandkumar

Vous pouvez utiliser instruction SQL RUNSCRIPT :

RUNSCRIPT FROM 'test.sql'

ou vous pouvez utiliser outil RunScript autonome/ligne de commande :

Java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script test.sql

Vous pouvez également utiliser l'outil RunScript dans une application:

RunScript.execute(conn, new FileReader("test.sql"));
90
Thomas Mueller

Si vous utilisez Spring-Boot et Spring-Test avec H2, il recherchera automatiquement schema.sql et data.sql dans votre chemin de classe et essayez de les exécuter. Donc, si vous les mettez dans src/test/resources ils doivent être récupérés et exécutés automatiquement

De plus, vous pouvez spécifier les fichiers de données que vous souhaitez exécuter avec les propriétés. Par exemple, en ajoutant une propriété à votreapplication.properties comme

spring.datasource.data=classpath:users.sql, classpath:books.sql, classpath:reviews.sql

configurera spring pour exécuter ces trois fichiers sql au lieu d'exécuter data.sql

9
robjwilkins

Sur OSX (cela ne devrait pas vraiment avoir d'importance) avec la version 1.4.192 avec les commandes suivantes, peu importe ce que j'ai fait, je n'ai pu voir aucun résultat:

Java -cp h2*.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql

où select.sql avait simplement:

select * from PUBLIC.MYTABLE;

J'ai dû ajouter le -showResults avant que la sortie ne commence à apparaître. Voici la commande complète:

Java -cp /Users/az/.m2/repository/com/h2database/h2/1.4.192/h2-1.4.192.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql -showResults

Si vous n'avez pas le pot nécessaire, téléchargez-le depuis ici (Cliquez sur le jar liens à côté de chaque version). Certains liens directs vers les pots sont les suivants:

1.4.193 (Mis à jour le 31 octobre 2016)

1.4.192 (Mis à jour le 26 mai 2016)

1.4.191 (Mis à jour le 21 janvier 2016)

1.4.190 (Mis à jour le 11 octobre 2016)

6
Ashutosh Jindal

Pour moi, le système a répondu par:

n'a pas trouvé le pilote org.h2.tools.RunScript

La solution était:

Java -classpath <path_to_your_h2-*.jar> org.h2.tools.RunScript \
-url jdbc:h2:tcp://localhost/~/test -script test.sql

Voir: http://www.h2database.com/html/tutorial.html#using_server

2
aspadacio