从 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/