𝖄𝕺🌎𝕿𝕽𝕺¥

𝖄𝕺🌎𝕿𝕽𝕺¥

𝕴 𝖉𝖔 𝖒𝖆𝖌𝖎𝖈
github

java小练之字符串與陣列——以halo為例附件快速遷移URL批量更新配合h2控制台使用

前言#

因為網站帶寬不行,使用了阿里雲的 oss 定向存儲,不過由於證書問題,資源綁定的域名皆為阿里雲默認域名oss-accelerate.aliyuncs.com。後來因為 ssl 證書更容易申請了,便想著更新下網站的檔案存儲 URL,例如現在的 file.yotroy.cool。但已知 halo 後台附件地址無法修改,所以結合自己掌握的一點 java 基礎,試著解決這個問題。

h2 控制台的使用#

參考 halo 官方文檔Halo 配置文件的詳細介紹及參考
打開 halo 配置文件application.yaml

  h2:
    console:
      settings:
        web-allow-others: true
      path: /h2-console
      enabled: true

web-allow-othersenabled設置為true,重啟服務。
網址後綴➕/h2-console進入控制台,輸入application.yamlusernamepassword

SQL statement 輸入SELECT * FROM ATTACHMENTS 並運行。

即可獲得網站所有附件數據庫信息。

思路#

使用javasplit字串分割方法截取字串然後打印其配對。
這裡需要用到THUMB_PATH PATHID三列數據。
我們直接複製需要更改的表格粘貼到 Excel 然後截取這三項到 Word 中,僅粘貼文本獲得自動換行的文本,注意不要搞混了順序要每行正確對應。然後使用替換功能把換行回車替換成其他字符例如;
tips: 換行可使用特殊字符^p表示。使得每條數據僅用;進行分割。
然後運行以下 java 即可更新所有附件,記得先備份防止窜數據。

java 主程式#

Database.java#

public class Database {
	public static void main(String[] args) {
		//newStr 替換後的THUMB_PATH數據
		//newPStr 替換後的PATH數據
		String newTPStr = "TPurl1;TPurl2";
		String newPStr = "Purl1;Purl2";
		String idStr = "1;2";
		String newTPArr[] = newTPStr.split(";");
		String newPArr[] = newPStr.split(";");
		String idArr[] = idStr.split(";");
		if (newPArr.length == idArr.length && newTPArr.length == idArr.length) {
			//e.g. UPDATE TEST SET NAME='Hi' WHERE ID=1;
			for (int i = 0; i < idArr.length; i++) {
				System.out.println("UPDATE ATTACHMENTS SET THUMB_PATH ='" + newTPArr[i] +"' WHERE ID=" +idArr[i] + ";");
			}
			for (int i = 0; i < idArr.length; i++) {
				System.out.println("UPDATE ATTACHMENTS SET PATH ='" + newPArr[i] +"' WHERE ID=" +idArr[i] + ";");
			}
		}
		else {
			System.out.println("length error");
		}
	}
}

輸出#

Database_java

評價#

在對字串的處理方面仍有待提高,如果能跳過 Excel 到 Word 再到字元替換編輯則效率更高。曾有意直接調用 Excel 數據但由於 Excel 版本等問題報錯了,所以仍需努力。

應用新 URL#

由於此操作僅僅是更新了附件數據庫的數據,並沒有更新其應用(如文章中該附件的引用還是原 url),這裡可以直接通過 halo 後台面板直接修改。也可通過 halo 數據導出替換修改後導入數據(過於繁瑣),也可直接於 H2 Console 中修改

h2 語法參考#

h2_Sample_SQL_Script

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。