續上回,用手動方式輸入資料,建好資料庫了嗎?
還沒做好的話,請把文字複製貼上,可以參考上一回怎樣做。
先教 Backup 及 restore 資料庫,學會後,玩爛了也不用怕。之後教 SQL ,最後才到寫程式。
———————————簡易的分隔線————————————
備份資料庫︰
有好幾種備份方法,這裡只介紹 Offline backups 及 Online backup。
備份前一定要斷開資料庫連接,然後複製一份。
Offline backups
https://db.apache.org/derby/docs/10.14/adminguide/cadminhubbkup12677.html
———————————提示 ( start )————————————
———————————提示 ( end )————————————
在連接資料庫狀態下,用 Derby 提供的工具做備份。執行【ReadOnlyModeBackup.sql】就好。
Online backup
https://db.apache.org/derby/docs/10.14/adminguide/cadminhubbkup01.html
———————————簡易的分隔線————————————
第一種方法,斷開資料庫連接,把備份資料夾蓋過現在的資料夾就好。都手動……覺不覺很煩?可以用 【Batch File Command】配【工作排程器】,不過……有需要經常還原嗎?
第二種方法,跟據【RestoreDatabase.txt】,用 Connection URL 還原。每次連接資料庫時,會自動還原,做開發及測試最方便。
例如︰
restoreFrom=A:\javatoybox\test_data\DerbyBackup\1900-01-01\FirstDB
Restoring a database from a backup copy
https://db.apache.org/derby/docs/10.14/adminguide/tadminhubbkup44.html
Setting attributes for the database connection URL
http://db.apache.org/derby/docs/10.14/ref/rrefattrib24612.html
———————————提示 ( start )————————————
設定 Connection 時,可以在 Data Management 修改。
在【Preferences】搜尋【Driver Definitions】。
———————————提示 ( end )————————————
都學會 Backup 及 Restore 嗎?建議先備份一次,再用 Connection URL做一個連線後自動還原。
執行 【DropSchema.sql】失敗,因為 Schema 入面還有 Table。Derby 的 Drop schema SQL,建議後面加 RESTRICT,防止錯誤刪除。
DROP SCHEMA statement
https://db.apache.org/derby/docs/10.4/ref/rrefsqlj31648.html
Derby SQL 格式 DROP TABLE [Schema].[Table]。先 Drop Table,再執行 Drop Schema 試試。
———————————簡易的分隔線————————————
Offline backups︰
備份前一定要斷開資料庫連接,然後複製一份。
Offline backups
https://db.apache.org/derby/docs/10.14/adminguide/cadminhubbkup12677.html
———————————提示 ( start )————————————
忘記資料庫位置?
不能 Disconnect?
———————————提示 ( end )————————————
Online backup︰
在連接資料庫狀態下,用 Derby 提供的工具做備份。執行【ReadOnlyModeBackup.sql】就好。
Online backup
https://db.apache.org/derby/docs/10.14/adminguide/cadminhubbkup01.html
———————————簡易的分隔線————————————
還原資料庫︰
第一種方法,斷開資料庫連接,把備份資料夾蓋過現在的資料夾就好。都手動……覺不覺很煩?可以用 【Batch File Command】配【工作排程器】,不過……有需要經常還原嗎?
第二種方法,跟據【RestoreDatabase.txt】,用 Connection URL 還原。每次連接資料庫時,會自動還原,做開發及測試最方便。
例如︰
restoreFrom=A:\javatoybox\test_data\DerbyBackup\1900-01-01\FirstDB
Restoring a database from a backup copy
https://db.apache.org/derby/docs/10.14/adminguide/tadminhubbkup44.html
Setting attributes for the database connection URL
http://db.apache.org/derby/docs/10.14/ref/rrefattrib24612.html
———————————提示 ( start )————————————
JDBC Driver 設定︰
設定 Connection 時,可以在 Data Management 修改。
在【Preferences】搜尋【Driver Definitions】。
———————————提示 ( end )————————————
Derby SQL︰
都學會 Backup 及 Restore 嗎?建議先備份一次,再用 Connection URL做一個連線後自動還原。
Drop Schema 及 Drop Table︰
執行 【DropSchema.sql】失敗,因為 Schema 入面還有 Table。Derby 的 Drop schema SQL,建議後面加 RESTRICT,防止錯誤刪除。
DROP SCHEMA statement
https://db.apache.org/derby/docs/10.4/ref/rrefsqlj31648.html
Derby SQL 格式 DROP TABLE [Schema].[Table]。先 Drop Table,再執行 Drop Schema 試試。
———————————簡易的分隔線————————————
使用 BLOB Cell Editor 導出檔案︰
拿個 BLOB 試試,就用【MEDIA_1】吧。這 Column 只儲存 hexadecimal 沒有其他資訊,知道那是甚麼檔嗎?音樂?圖片?就算知道是甚麼類型,那是小蘿莉還是爆鱗龍?檔案名稱也是很重要……
Table 設計參考 ( 本機 Demo 文件 )︰
file:///%DERBY_HOME%/demo/programs/toursdb/toursdb_readme.html#MAPS
———————————簡易的分隔線————————————
Add, Redefine, Drop 及 Rename Column︰
ADD ︰
不需要把 Table Drop 掉再定義過,SQL 有修改 Table 方法。綜合檔名 + 類型,用一個 Column 代表,看圖片,執行【TableAddColumn.sql】前,先設定【Connection profile】再按【Execute SQL Files】,不知道怎做,請回去 PART 1 温習。
———————————提示 ( start )————————————
Eclipse GUI 需要手動 Refresh︰
對 Table 作出改動都需要關掉 Editor --> Refresh --> 再開啟……這樣做才可以見到更變。
———————————提示 ( end )————————————
Redefine︰
【MEDIA_2_FILENAME】成功輸入資料,但在【MEDIA_1_FILENAME】更新資料失敗,為甚麼?去數一下檔名 + 副檔名有多少個字節,再看一下【VARCHAR】定義……慘了,檔名太長,怎麼辦?
很簡單,調整定義。
———————————簡易的分隔線————————————
DROP︰
假如不小心開多個 Column 怎麼辦?把 Column Drop 掉。
———————————簡易的分隔線————————————
RENAME ︰
手殘,打錯字又怎樣做?看圖示。
———————————簡易的分隔線————————————
導出資料︰
SELECT FROM︰
SQL 最簡單、最基本方法……
- SELECT [COLUMN_NAME] FROM [TABLE]
用 SQL 導出 BLOB 檔案及其他資料︰
解決 SQL 亂碼問題,在【ExtractColumnsBLOB.sql】中,有中文檔名,可以在【Preferences】設定成 UTF-8。或在【ExtractColumnsBLOB.sql】右鍵選【Properties】修改文檔編碼。
首先,建立資料夾,以圖示為例,在【A:\javatoybox】裡面,建立一個名為【test_data】資料夾。
導出檔案結果如圖示。如何導出多過一個 BLOB檔?我也不知道,但用程式碼的話,可以做得到,下次 PART 3 會有範例。
SYSCS_UTIL.SYSCS_EXPORT_QUERY_LOBS_TO_EXTFILE system procedure
https://db.apache.org/derby/docs/10.14/ref/rrefexportselectionproclobs.html
———————————簡易的分隔線————————————
使用 ij ︰
Eclipse 有 GUI 用,當然 Derby 會有內建 command mode 用,簡單練習 SQL 用法,不需要寫任何程式碼。
最簡單 command 如下︰
- connect 'jdbc:derby:A:\javatoybox\Database\FirstDB';
- SELECT id, actor, product FROM acg_character.profile;
- disconnect;
- exit;
ij Basics
http://db.apache.org/derby/papers/DerbyTut/ij_intro.html
———————————簡易的分隔線————————————
總結︰
SQL 部份大約這樣,如果要學更多,請參考 w3schools,我說參考的意思是每個 Database SQL 用法差不多,大同小異,還需要看 Derby 文檔作修正。
雖然是【小異】,但足夠左右寫出來的 SQL 能否正確執行,如果寫程式的話,最好把 SQL 部份分離,集中在一處作管理,在轉換 Database 時 ( 避免 Vendor lock-in,考慮換更好性能 Database 之類 ),不需要四處找 SQL 修改及測試。
看 Derby 文檔時,要注意使用【Built-in】的 SQL,避免使用不是 SQL Standard 的 Built-in function。
w3schools
https://www.w3schools.com/sql/
Derby SQL language reference
沒有留言:
發佈留言
設有留言驗證及審查,檢閱後,才會顯示留言。
本人惰性很高,留言或許會石沉大海。