获弃 发表于 2025-9-23 12:48:09

SQLCipher数据迁移到PostgreSql详细攻略

步骤一、安装Docker


[*]Windows11 安装Docker客户端教程:自己百度一下。
步骤二、SQLCipher解密,转换为Sqlite3


[*]访问官网进行下载
[*]使用DB Browser (SQLCipher) 客户访问数据库文件后,点开菜单栏 “工具” --> "设置加密",密码置空后,即可进行解密,自动将SQLCipher转换为Sqlite3。
[*]注意:这个解密的过程耗时比较长,请耐心等待;
步骤三、将Sqlite中的数据迁移到PostgreSql中

1. Docker安装PostgreSql

docker run --name my_postgres \
-e POSTGRES_PASSWORD=mysecretpassword \# 设置超级用户密码,务必修改
-p 5432:5432 \                           # 映射主机端口 5432 到容器端口 5432
-v pgdata:/var/lib/postgresql/data \   # 使用命名卷 pgdata 持久化数据
-d \                                     # 后台运行容器
postgres                                 # 使用官方镜像

[*]-e POSTGRES_PASSWORD=mysecretpassword: ​务必修改​ mysecretpassword为你自己设定的强密码,这是默认的超级用户 postgres的密码。
[*]-v pgdata:/var/lib/postgresql/data: 这里的 pgdata是 Docker 管理的命名卷(Named Volume)​的名称。如果该卷不存在,Docker 会自动创建它。数据会存储在 Docker 的管理区域(例如 /var/lib/docker/volumes/),与容器生命周期分离,从而实现持久化。
[*]使用 docker volume ls可以查看所有已创建的命名卷。
[*]增加 --restart=unless-stopped 可以自动启动容器,除非手动停止。
2. 拉取pgloader镜像

docker pull ghcr.io/dimitri/pgloader:latest3. 准备迁移脚本 migration.load

LOAD DATABASE
    FROM sqlite:////data/main_data.db
    INTO postgresql://postgres:123456@host.docker.internal:5432/main

WITH include drop, create tables, create indexes, reset sequences, foreign keys,
   workers = 8, concurrency = 1

ALTER SCHEMA 'main' RENAME TO 'public'

BEFORE LOAD DO
$$ create schema if not exists public; $$;
<strong>
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: SQLCipher数据迁移到PostgreSql详细攻略