从 WordPress 博客中导出数据到新博客(SQLite 与 Markdown)

2022-11-13

老博客基于 WordPress 搭建,使用 MySQL 数据库存储博客文章数据,而新博客采用了 flat-file 的设计。本文介绍了一种从 WordPress 导出数据到 SQLite,并最终导出到 Markdown 格式的文件中的方法。

导出 MySQL 数据到 sql 文件中

mysql 提供有自带的导出工具,可以导出成 sql 格式的文件

mysqldump -u [uname] -p [db_name] > database.sql

将 sql 文件中内容导入到 SQLite 中

可以使用这个小脚本,将 MySQL 导出的 sql 导入到 SQLite。MySQL 导出的 sql 带有一些 MySQL 特定的内容(字段类型等),该工具会转换这些字段到 SQLite 兼容的格式。

https://github.com/dumblob/mysql2sqlite

./mysql2sqlite database.sql | sqlite3 database.sqlite

Windows 上可以使用 Git Bash 来执行这个 shell 脚本。

通过 Node.js 将 SQLite 中博文导出到文件中

javascript 作为胶水语言用着还是挺舒服的。

该脚本会读取刚才导出的 SQLite 数据库文件,并且将博文保存到文件中。

WordPress 会把所有文章和附件信息存储在 wp_posts 数据表中,当 post_type 字段为 post 时,即代表这是个博客文章。

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('database.sqlite');
const fs = require('fs');

db.each('SELECT * FROM wp_posts', (err, row) => {
  if (row.post_type != 'post') return;
  fs.writeFileSync(row.ID + '.md',
`---
title: "${row.post_title}"
date: "${row.post_date}"
---

本文迁移自老博客,原始链接为 <https://lookas2001.com/${row.post_name}/>

${row.post_content}
`
  );
});

db.close();

使用 DB Browser (SQLite) 搭配 Excel 管理数据

DB Browser (SQLite) 是一个跨平台的 SQLite 数据库图形管理器,提供表格布局非常方便一些手动调整: https://github.com/sqlitebrowser/sqlitebrowser

当前 Github 上发布的稳定版高分屏下存在问题,推荐可以直接下载其测试版: https://nightlies.sqlitebrowser.org/latest/

加载中...

(。・∀・)ノ゙嗨,欢迎来到 lookas 的小站!

这里是 lookas 记录一些事情的地方,可能不时会有 lookas 的一些神奇的脑洞或是一些不靠谱的想法。

总之多来看看啦。