𝖄𝕺🌎𝕿𝕽𝕺¥

𝖄𝕺🌎𝕿𝕽𝕺¥

𝕴 𝖉𝖔 𝖒𝖆𝖌𝖎𝖈
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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。