Trước hết tôi muốn nói cơ sở dữ liệu mới với cơ sở dữ liệu h2. Tôi cần phải thực thi một tập lệnh sql trong cơ sở dữ liệu h2. Tôi có một tập lệnh test.sql và tôi muốn thực hiện điều này trong cơ sở dữ liệu h2. Có thể không?Thực thi tệp tập lệnh trong cơ sở dữ liệu h2
Trả lời
Bạn có thể sử dụng RUNSCRIPT SQL statement:
RUNSCRIPT FROM 'test.sql'
hoặc bạn có thể sử dụng RunScript standalone/command line tool:
java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script test.sql
Bạn cũng có thể sử dụng công cụ lệnh RunScript trong một ứng dụng:
RunScript.execute(conn, new FileReader("test.sql"));
Đối tôi hệ thống đã trả lời:
không tìm thấy tài xế org.h2.tools.RunScript
Giải pháp là:
java -classpath <path_to_your_h2-*.jar> org.h2.tools.RunScript \
-url jdbc:h2:tcp://localhost/~/test -script test.sql
Xem: http://www.h2database.com/html/tutorial.html#using_server
Ngày OSX (điều này nên không thực sự quan trọng) với câu 1.4.192 với các lệnh sau, bất kể tôi đã làm gì tôi không thể thấy bất kỳ kết quả nào:
java -cp h2*.jar org.h2.tools.RunScript -url "jdbc:h2:file:~/testdb" -user someusername -password somepass -script select.sql
nơi select.sql có đơn giản:
select * from PUBLIC.MYTABLE;
tôi phải thêm -showResults
trước khi sản lượng đã bắt đầu xuất hiện. Dưới đây là hoàn toàn lệnh:
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
Nếu bạn không có bình cần thiết, tải về từ here (Click vào jar
liên kết bên cạnh mỗi phiên bản). Một số liên kết trực tiếp đến các lọ như sau:
1.4.193(Cập nhật ngày 31-Oct-2016)
1.4.192(Cập nhật ngày 26-May-2016)
1.4.191(Cập nhật ngày 21-Jan- 2016)
1.4.190(Cập nhật 11-Oct-2016)
Có mẹo nào để sử dụng ví dụ đầu tiên của bạn không? Tôi có một 'bootstrap.sql' không có gì ngoài' RUNSCRIPT FROM 'test.sql'' và test.sql của tôi là một anh chị em với tệp tin bootstrap. Nếu tôi chạy 'jdbc: h2: mem: etsnom; INIT = RUNSCRIPT TỪ 'C:/workspace/bootstrap.sql'', tôi nhận được' FileNotFoundException' – Snekse
Nếu chúng ta sử dụng phương pháp thứ 2 của Thomas để tạo cơ sở dữ liệu, thì tên người dùng và mật khẩu mặc định sẽ được đặt là "" [chuỗi rỗng]. Tuy nhiên, nó luôn luôn rất quan trọng để thiết lập tên người dùng và mật khẩu để truy cập cơ sở dữ liệu, và làm như vậy trong trường hợp cơ sở dữ liệu H2, chúng ta có thể chạy lệnh dưới đây, java -cp h2 *.jar org.h2.tools.RunScript -url jdbc: h2: ~/test -user sa -password sa -script test.sql –