web-dev-qa-db-ja.com

H2データベースでのスクリプトファイルの実行

まず第一に、私はh2データベースに新しいと言いたいです。 h2データベースでsqlスクリプトファイルを実行する必要があります。スクリプトファイルtest.sqlがあり、これをh2データベースで実行したい。出来ますか?

53
elvisanandkumar

RUNSCRIPT SQLステートメント を使用できます。

RUNSCRIPT FROM 'test.sql'

または、 RunScriptスタンドアロン/コマンドラインツール を使用できます。

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

アプリケーション内でRunScriptツールを使用することもできます。

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

H2でspring-bootとspring-testを使用している場合、クラスパスでschema.sqldata.sqlが自動的に検索され、これらの実行が試行されます。したがって、それらをsrc/test/resourcesに入れると、それらは自動的に選択されて実行されるはずです

さらに、プロパティで実行するデータファイルを指定できます。たとえば、yourapplication.propertiesにプロパティを追加する

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

data.sqlを実行する代わりに、これら3つのsqlファイルを実行するようにspringを構成します

9
robjwilkins

OSX(これは実際には問題ではありません)で、v。1.4.192で次のコマンドを使用すると、何を実行しても結果が表示されませんでした。

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

select.sqlには次のものがあります。

select * from PUBLIC.MYTABLE;

出力が表示される前に、-showResultsを追加する必要がありました。完全なコマンドは次のとおりです。

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

必要なjarがない場合は、 here (各バージョンの横にあるjarリンクをクリックします)。 jarへの直接リンクは次のとおりです。

1.4.193 (2016年10月31日に更新)

1.4.192 (2016年5月26日に更新)

1.4.191 (2016年1月21日に更新)

1.4.190 (2016年10月11日に更新)

6
Ashutosh Jindal

私にとって、システムは次のように応答しました。

org.h2.tools.RunScriptドライバーが見つかりませんでした

解決策は次のとおりです。

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

参照: http://www.h2database.com/html/tutorial.html#using_server

2
aspadacio