2011-12-03 19 views
2

我真的不明白雖然SqlTool ......我只是想導入SQL文件到數據庫中,choosen這個命令做到這一點:雖然SqlTool不提交數據後退出(HSQLDB)

java -jar ~/bin/sqltool.jar --autoCommit --inlineRc URL=jdbc:hsqldb:file:/path/to/my/database.hsqldb,USER=SA,PASSWORD='' database.sql 

database.sql是所有創造的東西,如:

create table foo(id identity, name varchar(256)); 

然後我有第二個腳本,叫data.sql,應寫入到數據庫一樣的,這個人是我的整個TESTDATA東西:

insert into foo(name) values('bla'); 

當我現在執行我的bash腳本時,SQLTool會創建一個新的數據庫(在我刪除文件之前),但是不會對SQL文件執行任何操作! 第一個腳本運行沒有錯誤,但第二個說:

SEVERE SQL Fehler an 'data.sql' Zeile 1: 
"insert into foo (name) values('bla')" 
user lacks privilege or object not found: FOO 
org.hsqldb.cmdline.SqlTool$SqlToolException 

現在當我連接到數據庫,並說\dt沒有表!

我也把commit;放到每個文件的末尾,然後用--autoCommit打開SQLTool,但是這不起作用......這是怎麼回事?

回答

3

hsqldb在上次連接關閉之前需要SHUTDOWN命令,或者需要JDBC連接屬性shutdown = true。見docs

+2

+1'; shutdown = true'可以被附加到URL以便輕鬆完成。 – pilcrow