如何把数据从SQLite迁移到PostgreSQL
##
如何把数据从SQLite迁移到PostgreSQL
文章目录
- 1、DB-Engines 中的SQLite 和 PostgreSQL
- 2、SQLite安装和测试
- 2.1、编译安装SQLite
- 2.2、数据测试
- 3、Postgresql安装和测试
- 3.1、编译安装postgresql
- 3.2、测试
- 4、pgloader安装
- 5、数据迁移和验证
- 5.1、准备参数文件
- 5.2、数据迁移
- 5.3、迁移验证
1、DB-Engines 中的SQLite 和 PostgreSQL

SQLite 和 PostgreSQL 在 DB-Engines 排名中近三年保持稳定,这一现象可以从多个角度分析其背后的原因和意义:
- 技术定位的稳定性
- SQLite 作为嵌入式数据库,长期占据轻量级应用场景(移动设备、IoT、本地应用等)。它的无需服务端、零配置特性在特定领域几乎没有替代品,因此需求稳定。
- PostgreSQL 作为功能完备的企业级关系型数据库,在复杂查询、扩展性、标准兼容性上持续领先,尤其适合需要 ACID 事务和高级功能的场景(如地理空间数据、JSON 处理)。其开源属性也避免了商业数据库的供应商锁定风险。
- 生态成熟度
- 两者均已发展数十年(SQLite 始于 2000,PostgreSQL 始于 1989),生态工具链(如 ORM 支持、监控工具)和社区知识积累已高度成熟,用户迁移成本高。
- 新数据库(如 CockroachDB、TimescaleDB)更多瞄准细分领域(分布式、时序数据),而非直接挑战它们的核心市场。
- 排名方法的局限性
- DB-Engines 排名综合了技术讨论(Stack Overflow)、招聘需求、文献提及等指标,而非纯粹的性能或市场份额。两者的长期高排名反映了持续的开发者关注度和企业采用率,但可能掩盖了某些垂直领域的波动(如 PostgreSQL 在云原生场景的增长)。
- 行业趋势的印证
- SQLite 的稳定性:移动应用和边缘计算的增长巩固了其地位。即使 NoSQL 流行,本地存储仍需关系模型(如 Android 的 Room 库基于 SQLite)。
- PostgreSQL 的韧性:云厂商(AWS RDS、Azure PostgreSQL)的托管服务降低了使用门槛,同时其通过扩展(如 PostGIS、pgvector)不断适应新需求(GIS、AI 向量搜索),抵消了部分 NoSQL 的冲击。
- 潜在启示
- 创新不等于替代:NewSQL 和 NoSQL 的兴起并未削弱这两者在核心场景的价值,说明数据库市场是分层演化而非零和博弈。
- 长期维护的重要性:两者的持续更新(如 PostgreSQL 的 JSONB 性能优化、SQLite 的 WASM 支持)证明持续迭代比颠覆性创新更能维持竞争力。
排名不变并不意味着停滞,而是反映了它们在各自细分领域已形成近乎垄断的“最优解”地位。未来除非出现范式级技术变革(如量子数据库?),否则这种稳定性可能延续。对于用户而言,选择它们几乎是低风险决策,但也需关注新兴需求(如 HTAP、Serverless 数据库)是否超出它们的覆盖范围。
2、SQLite安装和测试
2.1、编译安装SQLite
Ref doc: https://sqlite.org/src/doc/trunk/doc/compile-for-unix.md
mkdir -p /sqlite/app
cd /sqlite/app
dnf install gcc make tcl-dev
wget https://sqlite.org/tmp/tcl9.0.0.tar.gz
tar -zxvf tcl9.0.0.tar.gz
cd tcl9.0.0/unix/
./configure
[root@tom sqlite]# which tclsh9.0
/usr/local/bin/tclsh9.0cd /sqlite/app
wget https://www.sqlite.org/2025/sqlite-src-3490100.zip
unzip sqlite-src-3490100.zip mv sqlite-src-3490100 sqlite
cd sqlite/
./configure --enable-all --with-tclsh=/usr/local/bin/tclsh9.0
make sqlite3.c
make sqlite3
make sqldiff
make sqlite3_rsync
make tclextension-install
make devtest
make releasetest
make sqlite3_analyzervi ~/.bash_profile
/sqlite/app/sqlite
2.2、数据测试
Ref doc: https://www.sqlite.org/cli.html
[root@tom sqlite]# ./sqlite3 db01
SQLite version 3.49.1 2025-02-18 13:38:58
Enter ".help" for usage hints.
sqlite> create table t1(id int,name varchar(20));
sqlite> insert into t1 values(1,'tom');
sqlite> insert into t1 values(2,'jerry');
sqlite> select * from t1;
1|tom
2|jerry
sqlite> .mode table
sqlite> select * from t1;
+----+-------+
| id | name |
+----+-------+
| 1 | tom |
| 2 | jerry |
+----+-------+
sqlite> .exit
3、Postgresql安装和测试
3.1、编译安装postgresql
Ref: https://www.postgresql.org/docs/17/install-make.html
3.2、测试
[postgres@tom:/home/postgres]$psql
psql (17.4)
Type "help" for help.postgres=# create database db01;
CREATE DATABASE
postgres=# \q
4、pgloader安装
[root@tom ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-9-x86_64/pgloader-3.6.10-1PGDG.rhel9.x86_64.rpm
Last metadata expiration check: 5:22:13 ago on Mon 31 Mar 2025 11:17:36 AM CST.
pgloader-3.6.10-1PGDG.rhel9.x86_64.rpm 3.0 MB/s | 21 MB 00:06
Dependencies resolved.
=======================================================================================================================================================Package Architecture Version Repository Size
=======================================================================================================================================================
Installing:pgloader x86_64 3.6.10-1PGDG.rhel9 @commandline 21 MTransaction Summary
=======================================================================================================================================================
Install 1 PackageTotal size: 21 M
Installed size: 22 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transactionPreparing : 1/1 Installing : pgloader-3.6.10-1PGDG.rhel9.x86_64 1/1 Verifying : pgloader-3.6.10-1PGDG.rhel9.x86_64 1/1 Installed:pgloader-3.6.10-1PGDG.rhel9.x86_64 Complete!
[root@tom ~]# su - postgres
Last login: Mon Mar 31 16:19:39 CST 2025 on pts/1
[postgres@tom:/home/postgres]$pgloader --version
pgloader version "3.6.7~devel"
compiled with SBCL 2.2.10-1.rhel9
5、数据迁移和验证
5.1、准备参数文件
[postgres@tom:/postgresql/backup]$vi db.load
load databasefrom sqlite:///sqlite/sqlite/db01into postgresql://postgres:postgres@localhost:5432/db01with include drop, create tables, create indexes, reset sequencesset work_mem to '16MB', maintenance_work_mem to '512 MB';
注意:
/sqlite/sqlite/db01是sqlite数据库db01数据文件路径
postgres:postgres@localhost:5432/db01是postgresql连接信息
5.2、数据迁移
[postgres@tom:/postgresql/backup]$pgloader db.load
2025-03-31T09:47:04.014001+01:00 LOG pgloader version "3.6.7~devel"
2025-03-31T09:47:04.018001+01:00 LOG Data errors in '/tmp/pgloader/'
2025-03-31T09:47:04.018001+01:00 LOG Parsing commands from file #P"/postgresql/backup/db.load"
2025-03-31T09:47:04.118005+01:00 LOG Migrating from #<SQLITE-CONNECTION sqlite:///sqlite/sqlite/db01 {1006781FE3}>
2025-03-31T09:47:04.118005+01:00 LOG Migrating into #<PGSQL-CONNECTION pgsql://postgres@localhost:5432/db01 {10067821A3}>
2025-03-31T09:47:04.348014+01:00 LOG report summary resettable name errors rows bytes total time
----------------------- --------- --------- --------- --------------fetch 0 0 0.000sfetch meta data 0 1 0.041sCreate Schemas 0 0 0.001sCreate SQL Types 0 0 0.006sCreate tables 0 2 0.021sSet Table OIDs 0 1 0.008s
----------------------- --------- --------- --------- --------------t1 0 2 0.0 kB 0.024s
----------------------- --------- --------- --------- --------------
COPY Threads Completion 0 4 0.028sIndex Build Completion 0 0 0.000sReset Sequences 0 0 0.020sPrimary Keys 0 0 0.000sCreate Foreign Keys 0 0 0.000sCreate Triggers 0 0 0.000sInstall Comments 0 0 0.000s
----------------------- --------- --------- --------- --------------Total import time ✓ 2 0.0 kB 0.048s
5.3、迁移验证
[postgres@tom:/postgresql/backup]$psql
psql (17.4)
Type "help" for help.postgres=# \c db01
You are now connected to database "db01" as user "postgres".
db01=# \dList of relationsSchema | Name | Type | Owner
--------+------+-------+----------public | t1 | table | postgres
(1 row)db01=# select * from t1;id | name
----+-------1 | tom2 | jerry
(2 rows)db01=#
相关文章:
如何把数据从SQLite迁移到PostgreSQL
## 如何把数据从SQLite迁移到PostgreSQL 文章目录 1、DB-Engines 中的SQLite 和 PostgreSQL2、SQLite安装和测试2.1、编译安装SQLite2.2、数据测试 3、Postgresql安装和测试3.1、编译安装postgresql3.2、测试 4、pgloader安装5、数据迁移和验证5.1、准备参数文件5.2、数据迁移…...
Qt使用QGraphicsView绘制线路图————附带详细实现代码
文章目录 0 效果1 核心1.1 简单示例1.1.1 解读 1.2 创建用户交互1.2.1 完整示例 1.3 创建图形元1.3.1 绘制直线1.3.2 绘制贝塞尔曲线1.3.3 绘制图片 1.4 移动的小车 2 使用自定义视图类参考 0 效果 视图中包含线路、道岔、信号灯、火车。 下图为站点信号灯: 下图…...
【系统性偏见:AI照出的文明暗伤与生存悖论】
系统性偏见:AI照出的文明暗伤与生存悖论 第一层:偏见如何从数据中“遗传” 当某科技公司用十年招聘数据训练AI筛选简历时,系统悄然学会:提到"女性工程师协会"的简历,获得面试的概率自动下降37%——这相当于…...
【Linux】调试器——gdb使用
目录 一、预备知识 二、常用指令 三、调试技巧 (一)监视变量的变化指令 watch (二)更改指定变量的值 set var 正文 一、预备知识 程序的发布形式有两种,debug和release模式,Linux gcc/g出来的二进制…...
【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)
之前我们分享过2000-2024年我国逐年的归一化植被指数(NDVI)栅格数据,该逐年数据是取的当年月归一化植被指数(NDVI)的年最大值!另外,我们基于此年度栅格数据按照行政区划取平均值,得到…...
Shell 不神秘:拆解 Linux 命令行的逻辑与效率
初始shell shell的概述 什么是shell 本质 shell本质是脚本文件:完成批处理。 比如 有一个文件 中十个文件,这十个文件中每个文件又有是个子文件,由人来处理,很麻烦,但如果写一个脚本文件,让脚本来替我…...
win 远程 ubuntu 服务器 安装图形界面
远程结果:无法使用docker环境使用此方法 注意要写IP和:数字 在 ubuntu 服务器上安装如下: # 安装 sudo apt-get install tightvncserver # 卸载 sudo apt purge tightvncserver sudo apt autoremove#安装缺失的字体包: sudo apt update s…...
大模型高质量rag构建:A Cheat Sheet and Some Recipes For Building Advanced RAG
原文:A Cheat Sheet and Some Recipes For Building Advanced RAG — LlamaIndex - Build Knowledge Assistants over your Enterprise DataLlamaIndex is a simple, flexible framework for building knowledge assistants using LLMs connected to your enterpris…...
【Qt】游戏场景和图元
一:图元 advance函数: 在 Qt 框架里,QGraphicsItem 是用于在 QGraphicsScene 中绘制图形项的基类。advance(int phase) 是 QGraphicsItem 类的一个虚函数,其主要用途是让图形项在场景的动画或更新过程里完成特定的逻辑操作。 p…...
C++位运算精要:高效解题的利器
引言 在算法竞赛和底层开发中,位运算(Bit Manipulation)因其极高的执行效率而广受青睐。它能在O(1)时间复杂度内完成某些复杂操作,大幅优化程序性能。本文系统梳理C位运算的核心技巧,涵盖基础操作、经典应用、优化策略…...
几种常见的.NET单元测试模拟框架介绍
目录 1. Moq 2. NSubstitute 3. AutoFixture 4. FakeItEasy 总结对比 单元测试模拟框架是一种在软件开发中用于辅助单元测试的工具。 它的主要作用是创建模拟对象来替代真实对象进行测试。在单元测试中,被测试的代码可能依赖于其他组件或服务,如数…...
开源的CMS建站系统可以随便用吗?有什么需要注意的?
开源CMS建站系统虽然具有许多优点,但并非完全“随便用”。无论选哪个CMS系统,大家在使用的时候,可以尽可能地多注意以下几点: 1、版权问题 了解开源许可证:不同的开源CMS系统采用不同的开源许可证,如GPL、…...
初始ARM
ARM最基础的组成单元。 最小系统:能系统能够正常工作的最少器件构成的系统 。 一、CPU基础定义 1. 核心定位 计算机三大核心部件: CPU(运算与控制)内部存储器(数据存储)输入/输出设备(数据交互…...
vue配置.eslintrc、.prettierrc详解
一、eslint简介 ESLint 是一个用于识别和报告 JavaScript 代码中潜在问题的静态代码分析工具。它可以帮助开发人员和团队维护一致的代码风格,减少错误,并确保代码质量。以下是 ESLint 的一些关键特点和功能: 1.静态代码分析:ESLi…...
DataPlatter:利用最少成本数据提升机器人操控的泛化能力
25年3月来自中科院计算所的论文“DataPlatter: Boosting Robotic Manipulation Generalization with Minimal Costly Data”。 视觉-语言-动作 (VLA) 模型在具身人工智能中的应用日益广泛,这加剧对多样化操作演示的需求。然而,数据收集的高成本往往导致…...
诠视科技MR眼镜如何安装apk应用
诠视科技MR眼镜如何安装apk应用 1、使用adb工具安装1.1 adb工具下载1.2 解压adb文件1.3 使用adb安装apk1.4 常用adb命令 2、拷贝到文件夹安装 1、使用adb工具安装 1.1 adb工具下载 点击下面的链接开始下载adb工具,下载结束以后解压文件。 下载链接: https://down…...
3.31Python有关文件操作
1.复制文件 import os from shutil ipmort copy,copytreepath os.path.join(os.getcwd(),test1.txt) target_path os.path.join(os.getcwd(),test1copy)copy(path,target_path) copytree(path,target_path) 注意:test1.txt 和 test1copy 文件夹/包 都点存在 …...
搭建前端环境和后端环境
搭建前端环境 ①、安装vscode,并安装相应的插件工具 ②、安装node.js,可以选择当前版本,或者其他版本 ③、创建工作区 创建一个空文件夹,然后通过vscode工具打开,保存为后缀名为.code-workspace ④、从gitee…...
Polhemus FastScan 单摄像头3D激光扫描器
FastSCAN Cobra是Polhemus公司研制的手持激光扫描仪。与以前的产品比较,它节省了30%的费用,体积也减小了一半 ,但仍然保留了所有功能,使用和携带都更加方便。作为超小的手持激光扫描仪,FastSCAN Cobra对扫描三维物体具…...
召唤数学精灵
1.召唤数学精灵 - 蓝桥云课 问题描述 数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。 累加法仪式 A(n) 是将从1到 n 的所有数字进行累加求和,即: A(n)12⋯n 累乘法仪式 B(n) …...
《算法:递归+记忆化搜索》
递归记忆化搜索 此文章为简单讲义,详情请移步至主播的主页算法合集: 樱茶喵的个人主页 🔴递归 一.什么是递归? 函数自己调用自己。 二.为什么要用递归? 优点: 代码简洁,可读性好 可用于某些…...
框架修改思路
一、组件引入基本样式 面包屑(使用element plus的标签页) <!-- 标签页区域 --><el-tabs v-model"activeTab" type"card" closable tab-remove"removeTab" class"top-tabs"><el-tab-pane :key&q…...
每天学一个 Linux 命令(8):ls
大家好,欢迎来到《每天掌握一个Linux命令》系列。在这个系列中,我们将逐步学习并熟练掌握Linux命令,今天,我们要学习的命令是ls。 01 什么是ls命令 在Linux系统中,ls命令是“list”的缩写,其英文全称为“list directory contents”,即“列出目录内容”。该命令非常实用…...
2025图像处理和深度学习国际学术会议(IPDL 2025)
重要信息 官网:www.IPDL.xyz 时间:2025年4月11-13日 地点:中国-成都 简介 随着深度学习和图像处理技术的迅速发展,相关技术的应用逐渐渗透到各个行业,如医疗影像分析、自动驾驶、安防监控和智能制造等。这些应用的…...
Flutter 环境搭建、常用指令、开发细节
一、环境搭建 Flutter 插件和包管理平台:pub.devFlutter 环境安装,官方中文文档,按着官方的来就够了,没啥难度。安卓模拟器可以使用 Android Studio 自带的也可以第三方的,例如:Genymotion。配置环境变量&…...
使用uni-app框架 写电商商城前端h5静态网站模板项目-手机端-前端项目练习
以前用vue2 分享过一个电商商城前端静态网站项目-电脑端,需要的小伙伴还是很多的,最近又花了几天更新了一个 手机端的 电商商城h5项目,今天也分享一下实现方案。 对于以前写的 电商商城前端静态网站模板-电脑端,有兴趣的小伙伴 可…...
远心镜头原理
文章目录 原理特点分类应用领域 参考:B站优致谱视觉 原理 远心镜头的工作原理基于其特殊的光学设计,旨在解决普通镜头存在的视差问题。它通过将镜头的光轴与成像面垂直,并使主光线平行于光轴,从而确保在一定的物距范围内…...
centos7修复漏洞CVE-2023-38408
漏洞描述: CVE-2023-38408 是 OpenSSH 组件中的一个远程代码执行(RCE)漏洞,影响 OpenSSH 代理(ssh-agent)的安全性。该漏洞被发现于 2023 年 7 月,并被标记为 高危(CVSS 评分 7.3&a…...
Scikit-learn使用指南
1. Scikit-learn 简介 定义: Scikit-learn(简称 sklearn)是基于 Python 的开源机器学习库,提供了一系列算法和工具,用于数据挖掘、数据预处理、分类、回归、聚类、模型评估等任务。特点: 基于 NumPy、SciP…...
React AJAX:深入理解与高效实践
React AJAX:深入理解与高效实践 引言 随着Web应用的日益复杂,前端开发对数据的处理需求也越来越高。React作为目前最流行的前端框架之一,其与AJAX的结合使得数据的异步获取和处理变得更为高效和便捷。本文将深入探讨React与AJAX的关系&…...
