試用開源資料庫ApacheDerby
0,版本
在下載,要求JRE版本不低於1.5.
1,設定環境
假設:
DERBY安裝路徑:D:\dev\db-derby-10.8.2.2-bin
使用者環境變數設定如下:
myenv.bat:
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_04
set PATH=%JAVA_HOME%\bin;%PATH%
set DERBY_INSTALL=D:\dev\db-derby-10.8.2.2-bin
set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;%DERBY_INSTALL%\lib\derbynet.jar;%DERBY_INSTALL%\lib\derbyclient.jar;.
2,驗證Derby
java org.apache.derby.tools.sysinfo
------------------ Java 資訊 ------------------
Java 版本: 1.6.0_04
Java 供應商: Sun Microsystems Inc.
Java 主目錄: C:\Program Files\Java\jdk1.6.0_04\jre
Java 類路徑: D:\dev\db-derby-10.8.2.2-bin\lib\derby.jar;D:\dev\db-derby-10
.8.2.2-bin\lib\derbytools.jar;.
OS 名: Windows XP
OS 體系結構: x86
OS 版本: 5.1
Java 使用者名稱: mahong
Java 使用者主目錄:C:\Documents and Settings\mahong
Java 使用者目錄: D:\dev\db-derby-10.8.2.2-bin
java.specification.name: Java Platform. API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_04-b12
--------- Derby 資訊 --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[D:\dev\db-derby-10.8.2.2-bin\lib\derby.jar] 10.8.2.2 - (1181258)
[D:\dev\db-derby-10.8.2.2-bin\lib\derbytools.jar] 10.8.2.2 - (1181258)
------------------------------------------------------
----------------- 語言環境資訊 -----------------
當前語言環境: [中文/中國 [zh_CN]]
找到支援的語言環境:[cs]
版本:10.8.2.2 - (1181258)
3,訪問嵌入式資料庫
視窗1:
啟動資料庫例項。
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start
視窗2:
D:\dev\java org.apache.derby.tools.ij
ij 版本 10.8
ij>connect 'jdbc:derby:MyDbTest;create=true';
lj>exit;
在當前路徑下生成MyDbTest目錄,併產生Derby.log日誌檔案.
這種方式下,資料庫例項與應用程式在同一個JVM內.
4,訪問伺服器資料庫
--視窗1:
--啟動網路伺服器
D:\dev\derby-db>java -jar %DERBY_INSTALL%\lib\derbyrun.jar server start
Wed Jun 06 19:34:35 CST 2012 : 已使用基本伺服器安全策略安裝了安全管理程式。
Wed Jun 06 19:34:35 CST 2012 : Apache Derby 網路伺服器 - 10.8.2.2 - (1181258)
已啟動並準備接受埠 1527 上的連線
--視窗2:
--以客戶端方式連線:
D:\dev\java org.apache.derby.tools.ij
ij 版本 10.8
ij> connect 'jdbc:derby://localhost:1527/MyDbTest;create=true';
==>建立了資料庫MyDbTest,在啟動server的目錄下.
ij> create table dept(deptno int not null,name varchar(30));
已插入/更新/刪除 0 行
ij> alter table dept add constraint pk_dept primary key(deptno);
已插入/更新/刪除 0 行
ij> create table emp(empno int,name varchar(40),addr varchar(40),deptno int);
已插入/更新/刪除 0 行
ij> alter table emp add constraint fk_emp_r_dept foreign key(deptno) references
dept(deptno);
已插入/更新/刪除 0 行
ij> insert into emp values(1,'name1','addr1',1);
錯誤 23503:表“EMP”上的 INSERT 導致違反鍵 (1) 的外來鍵約束“FK_EMP_R_DEPT”。語
句已回滾。
==>外來鍵約束
ij> insert into dept values(1,'deptname1');
已插入/更新/刪除 1 行
ij> insert into emp values(1,'name1','addr1',1);
已插入/更新/刪除 1 行
ij> commit;
ij> insert into emp values(2,'name2','addr2',1);
已插入/更新/刪除 1 行
ij> rollback;
ij>exit;
--關閉伺服器:
D:\dev\java -jar %DERBY_INSTALL%\lib\derbyrun.jar server shutdown
--視窗1:
--重新啟動伺服器
D:\dev\derby_db>java -jar %DERBY_INSTALL%\lib\derbyrun.jar server start
Wed Jun 06 20:20:32 CST 2012 : 已使用基本伺服器安全策略安裝了安全管理程式。
Wed Jun 06 20:20:32 CST 2012 : Apache Derby 網路伺服器 - 10.8.2.2 - (1181258)
已啟動並準備接受埠 1527 上的連線
--視窗2:
--啟動客戶端查詢結果
D:\dev>java org.apache.derby.tools.ij
ij 版本 10.8
ij> connect 'jdbc:derby://localhost:1527/MyDbTest';
ij> select * from emp;
EMPNO |NAME |ADDR
|DEPTNO
--------------------------------------------------------------------------------
-------------------------
1 |name1 |addr1
|1
2 |name2 |addr2
|1
已選擇 2 行
==>透過測試表明:伺服器啟動時,並沒有檢查並開啟資料庫;只有在客戶端訪問時,在啟動伺服器的目錄下建立或查詢指定資料庫;
啟動一個伺服器,可以同時支援客戶端對多個資料庫的訪問.
5,測試java程式
視窗1:
啟動資料庫例項。
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start
視窗2:
D:\dev\db-derby-10.8.2.2-bin\demo\programs\simple>javac SimpleApp.java
注意:SimpleApp.java 使用了未經檢查或不安全的操作。
注意:要了解詳細資訊,請使用 -Xlint:unchecked 重新編譯。
D:\dev\db-derby-10.8.2.2-bin\demo\programs\simple>java SimpleApp derbyclient
SimpleApp starting in derbyclient mode
Loaded the appropriate driver
Connected to and created database derbyDB
Created table location
Inserted 1956 Webster
Inserted 1910 Union
Updated 1956 Webster to 180 Grand
Updated 180 Grand to 300 Lakeshore
Verified the rows
Dropped table location
Committed the transaction
SimpleApp finished
關於如何與其他產品配合,分別參考:
Eclipse:
iBatis:
Tomcat:
6,匯入/匯出
在當前目錄準備myfile.txt:
3,name3,addr3,1
4,name4,addr4,1
5,name5,addr5,1
6,name6,addr6,1
視窗1:
啟動資料庫例項。
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start
視窗2:
D:\dev\derby_db>java org.apache.derby.tools.ij
ij> connect 'jdbc:derby://localhost:1527/MyDbTest';
ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(
null,'EMP','myfile.txt',',',null,null,0);
ij> select * from emp;
EMPNO |NAME |ADDR
|DEPTNO
--------------------------------------------------------------------------------
-------------------------
1 |name1 |addr1
|1
2 |name2 |addr2
|1
已選擇 2 行
ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(
null,'EMP','myfile.txt',',',null,null,0);
> 錯誤 XIE0R:檔案 myfile.txt 中的第 4 行發生匯入錯誤:在行 4 上的意外位置中讀取
到 endOfFile。
錯誤 XIE0E:在行 4 上的意外位置中讀取到 endOfFile。
==>最後以行需要換行
ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(
> null,'EMP','myfile.txt',',',null,null,0);
已執行語句。
ij> select * from emp;
EMPNO |NAME |ADDR
|DEPTNO
--------------------------------------------------------------------------------
-------------------------
1 |name1 |addr1
|1
2 |name2 |addr2
|1
3 |name3 |addr3
|1
4 |name4 |addr4
|1
5 |name5 |addr5
|1
6 |name6 |addr6
|1
已選擇 6 行
ij>CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE(
null,'EMP','myfile.out',null,null,null);
==>在當前路徑下生成檔案myfile.out
1,"name1","addr1",1
2,"name2","addr2",1
3,"name3","addr3",1
4,"name4","addr4",1
5,"name5","addr5",1
6,"name6","addr6",1
--根據文件說明,還支援LOB欄位的匯入/匯出。
7 備份恢復
7.1備份
視窗1:
啟動資料庫例項。
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start
視窗2:
D:\dev\derby_db>java org.apache.derby.tools.ij
ij> connect 'jdbc:derby://localhost:1527/MyDbTest';
ij> CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('d:/dev/backup/2012-06-07');
==>會自動建立目錄2012-06-07,將資料備份到該目錄下。
ij> exit;
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl shutdown
Thu Jun 07 08:13:25 CST 2012 : Apache Derby 網路伺服器 - 10.8.2.2 - (1181258)
關閉
D:\dev\derby_db>rmdir /S Mydbtest
Mydbtest, 是否確認(Y/N)? y
D:\dev\derby_db>dir
驅動器 D 中的卷是 work
卷的序列號是 2044-0107
D:\dev\derby_db 的目錄
2012-06-07 08:14
2012-06-07 08:14
2012-06-07 08:13 1,047 derby.log
2012-06-07 08:05 126 myfile.out
2012-06-07 08:02 68 myfile.txt
3 個檔案 1,241 位元組
2 個目錄 8,345,808,896 可用位元組
7.2恢復
視窗1:
D:\dev\derby_db>java org.apache.derby.drda.NetworkServerControl start
視窗2:
D:\dev\derby_db>java org.apache.derby.tools.ij
ij 版本 10.8
ij> connect 'jdbc:derby://localhost:1527/MyDbTest';
錯誤 08004:由於找不到資料庫 MyDbTest,已拒絕連線。
ij> connect 'jdbc:derby://localhost:1527/MyDbTest;restoreFrom=d:/dev/backup/2012
-06-07';
錯誤 XJ040:DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, SQLERRMC: 無法使用類
載入器 啟動資料庫 'MyDbTest',請參閱下一
個異常,以瞭解詳細資訊。::SQLSTATE: XBM0Q未找到檔案 d:\dev\backup\2012-06-07\ser
vice.properties。請確保備份副本正確而且未損壞。
ij> connect 'jdbc:derby://localhost:1527/MyDbTest;restoreFrom=d:/dev/backup/2012
-06-07/MyDbTest';
ij> select count(*) from emp;
1
-----------
6
已選擇 1 行
8 複製
Derby支援的複製有如下特點:
*基於事務日誌
*只有主庫處理事務,備庫不支援事務,也不支援只讀開啟
*非同步,主庫提交事務與日誌傳送/應用無關(可能導致切換時丟失部分資料)
*一個例項可以同時充當多個角色(資料庫D1的主庫角色,資料庫D2的從庫角色,非複製資料庫D3)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-732277/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開源滲透測試工具--關於資料庫資料庫
- 開源資料庫流行度首次超過非開源資料庫Confluent資料庫
- 用Rust編寫的資料庫GreptimeDB現開源Rust資料庫
- oracle測試資料庫啟用Oracle資料庫
- 開源資料庫的現狀資料庫
- 分散式資料庫火了 開源填補資料庫空白分散式資料庫
- 資料庫測試專用術語資料庫
- 開源的誘惑——資料庫篇資料庫
- 開源如何有助於資料庫安全資料庫
- ChatGPT “眼”中的開源資料庫ChatGPT資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- 平安科技資料庫總經理汪洋:開源資料庫在平安的應用實踐資料庫
- 小試國產開源HTAP分散式NewSQL資料庫TiDB-v5.3.0分散式SQL資料庫TiDB
- 開源資料庫license數量首次超過商業資料庫資料庫
- 開源資料庫大會技術分享資料庫
- 主流開源分散式圖資料庫 Benchmark分散式資料庫
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- PouchDB:一個開源的 JS 資料庫JS資料庫
- Android開源資料庫 GreenDao實踐Android資料庫
- 開源NoSQL資料庫5個"基友”SQL資料庫
- Gartner對開源資料庫的研究(轉)資料庫
- 資料庫開源 | 200人中英文混說資料庫開放申請資料庫
- 介紹一款用於搞亂資料庫ID的開源Python庫資料庫Python
- 資料庫試題資料庫
- 將Standby資料庫臨時轉換為主資料庫用於測試資料庫
- 正式開源金融資料庫效能測試工具 Detabench-T 。資料庫
- 微信終端開源資料庫 WCDB – Swift 版本資料庫Swift
- Android開源資料庫框架-LitePal的使用Android資料庫框架
- 開源資料庫:MySQL與PostgreSQL大比拼資料庫MySql
- 微信終端開源資料庫 WCDB - Swift 版本資料庫Swift
- cego 2.20.12 釋出,開源資料庫Go資料庫
- Sun推出自己的開源Java資料庫Java資料庫
- Oracle與開源資料庫:自由就是力量(轉)Oracle資料庫
- 58.7%的中國企業使用開源軟體應用於資料庫方向資料庫
- 大咖說·對話開源|企業如何用好開源資料庫資料庫
- 保證資料庫質量安全:從0開始的資料庫測試資料庫
- 資料來源連線資料庫資料庫
- [TEAP早期試讀]資料庫和敏捷開發資料庫敏捷