2014-06-24 26 views

Trả lời

3

Sử dụng lệnh BACKUP DATABASE TO.

Dưới đây là một liên kết đến tài liệu:

HSQLDB System Management Documentation

tôi đã không kiểm tra này, nhưng tôi tưởng tượng nó là một cái gì đó dọc theo dòng:

String backup = "BACKUP DATABASE TO " + "'" + filePath + "' BLOCKING"; 

PreparedStatement preparedStatement = connection.prepareStatement(backup); 

preparedStatement.execute(); 

Bạn sẽ muốn quấn nó trong một khối try-catch tất nhiên.

Theo như khôi phục db đi, tôi nghĩ bạn phải thực hiện điều đó trong khi cơ sở dữ liệu đang ngoại tuyến bằng ứng dụng DbBackupMain. Vì vậy, bạn sẽ thực hiện lệnh này tại cửa sổ dòng lệnh:

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir 
+0

bằng cách sử dụng 'DbBackupMain', Tôi có thể chỉ định tên đường dẫn cục bộ trong ** tardir * * giữ chỗ? Tôi muốn nó đến một địa điểm cụ thể. Tôi trích xuất ** HSQL ** DB trong D: \ Database \ hsqldb \ path và cơ sở dữ liệu của tôi nằm trong D: \ Database \ HSQLDatabase \ path. Làm thế nào tôi có thể xác định điều này để tạo sao lưu? trong D: \ Database \ Backup \ đường dẫn này? Vui lòng giúp – Bhat

+0

bằng cách sử dụng bản sao lưu thực thi 'PreparedStatement' đang tạo. Nhưng nó đang tạo nhiều bản sao trong đường dẫn vị trí được chỉ định. làm thế nào để tôi sửa đổi để cập nhật/hoàn toàn cho một tồn tại? Để tôi có thể quản lý một bản sao của tập tin sao lưu – Bhat

2

Mỗi cơ sở dữ liệu HyperSQL được gọi là một cửa hàng . Có ba loại danh mục tùy thuộc vào cách dữ liệu được lưu trữ.

Các loại dữ liệu danh mục:

mem: lưu trữ hoàn toàn trong RAM - mà không có bất kỳ sự kiên trì vượt qua cuộc sống quá trình JVM của

tập tin: lưu trữ trong các tập tin hệ thống tập tin

res: được lưu trữ trong tài nguyên Java, chẳng hạn như Jar và luôn đọc chỉ

Để sao lưu danh mục đang chạy, nhận kết nối JDBC và đưa ra lệnh BACKUP DATABASE trong SQL. Trong dạng đơn giản nhất của nó, định dạng lệnh dưới đây sẽ sao lưu cơ sở dữ liệu dưới dạng tệp .tar.gz duy nhất vào thư mục đã cho.

BACKUP DATABASE TO <directory name> BLOCKING [ AS FILES ] 

Tên thư mục phải kết thúc bằng dấu gạch chéo để phân biệt nó làm thư mục và toàn bộ chuỗi phải có dấu nháy đơn như sau: 'subdir/nesteddir /'.

Để sao lưu danh mục ngoại tuyến, danh mục phải ở trạng thái tắt. Bạn sẽ chạy một lệnh Java như

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --save tardir/backup.tar dbdir/dbname 

. Trong ví dụ này, cơ sở dữ liệu có tên dbname và nằm trong thư mục dbdir. Bản sao lưu được lưu vào một tệp có tên backup.tar trong thư mục tardir.

nơi tardir/backup.tar là đường dẫn tệp tới tệp * .tar hoặc * .tar.gz được tạo trong hệ thống tệp của bạn và dbdir/dbname là đường dẫn tệp đến tên cơ sở tệp danh mục.

Bạn sử dụng DbBackup trên dòng lệnh hệ điều hành của mình để khôi phục danh mục từ bản sao lưu.

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir 

nơi tardir/backup.tar là một đường dẫn tập tin vào * .tar hoặc file * .tar.gz để được đọc, và dbdir là thư mục đích để trích xuất các tập tin Danh mục thành. Lưu ý rằng dbdir chỉ định đường dẫn thư mục, không có tên cơ sở của tệp danh mục. Các tệp sẽ được tạo bằng các tên được lưu trữ trong tệp tar. Để biết thêm chi tiết refer

+0

thực sự tốt !!! – Xelian

0

Vì vậy, trong java + Spring + JdbcTemplate

Sao lưu (On-line):

@Autowired 
public JdbcTemplate jdbcTemplate; 

public void mainBackupAndRestore() throws IOException { 
    ... 
    jdbcTemplate.execute("BACKUP DATABASE TO '" + sourceFile.getAbsolutePath() + "' BLOCKING"); 
} 

này sẽ tiết kiệm được .properties, .scripts và tập tin .lobs đến một tar trong sourceFile.getAbsolutePath().

Restore:

DbBackupMain.main(new String[] { "--extract", baseDir.getAbsolutePath(), 
        System.getProperty("user.home") + "/restoreFolder" }); 

này sẽ nhận được tập tin từ baseDir.getAbsolutePath() và sẽ đặt chúng trong USERHOME/restoreFolder nơi bạn có thể kiểm tra xem tất cả khôi phục là OK. thùy chứa dữ liệu lob/blob, tập lệnh chứa truy vấn được thực thi.

enter image description here

Các vấn đề liên quan