如何将数据从SQLite中迁移到PostgreSQL

sqlite是一款优秀的嵌入式数据库,经常被应用在移动端、内部或临时数据库、嵌入式设备和物联网等场景中。它占用的资源非常低,可能只需要几百k的内存就够了,是一个真正开源的无限制的数据库,跨平台,支持Linux, Mac , Android, iOS和 Windows 等,主要应用于嵌入式开发.

目前SQLite使用的用户非常的多,大多数的移动终端都装有SQLite数据库,包括我们熟知的微信、美团等热门应用都使用了SQLite。一个应用在初始版本阶段也可以使用SQlite来快速构建原型,随着持续运行数据量逐渐增大,业务也越来越复杂,SQLite的一些缺点也暴露了出来,包括不适合大数据量存储,无法满足多线程高并发和共享,缺乏用户管理和安全等功能,此时就需要将应用迁移到C/S结构的数据库管理系统上(MySQL、PostgreSQL、Oracle、SQL Server),同时需要将历史数据也进行同步。

SqliteToPostgres是一款功能强大的数据库转换软件,支持将Sqlite数据库转换为Postgres类型,软件提供了向导式的配置流程,支持对数据库进行导入、导出或者自定义字段进行数据库转换操作,是一款很方便的数据迁移工具。

准备工作

talk is cheap, show me the code,接下来我们亲自体验下,我们的准备工作如下:

  • 一个sqlite的数据库文件,我们使用golang程序生成
package main
import (
 "database/sql"
 "fmt"
 _ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./foo.db")
checkErr(err)
    sql_table := `
CREATE TABLE IF NOT EXISTS "userinfo" (
 "uid" INTEGER PRIMARY KEY AUTOINCREMENT,
 "username" VARCHAR(64) NULL,
 "departname" VARCHAR(64) NULL,
 "created" TIMESTAMP default (datetime('now', 'localtime'))
);`
 _, err = db.Exec(sql_table)//执行数据表
checkErr(err)
//插入数据
stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
checkErr(err)
res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09")
checkErr(err)
id, err := res.LastInsertId()
checkErr(err)
fmt.Println(id)
//更新数据
stmt, err = db.Prepare("update userinfo set username=? where uid=?")
checkErr(err)

res, err = stmt.Exec("astaxieupdate", id)
checkErr(err)

affect, err := res.RowsAffected()
checkErr(err)

fmt.Println(affect)

//查询数据
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)

for rows.Next() {
    var uid int
    var username string
    var department string
    var created string
    err = rows.Scan(&uid, &username, &department, &created)
    checkErr(err)
    fmt.Println(uid)
    fmt.Println(username)
    fmt.Println(department)
    fmt.Println(created)
}
db.Close()
}

func checkErr(err error) {
if err != nil {
panic(err)
}
}
go mod init tttt
go mod tidy
rm -rf ~/.cache/go-build/* 
yum install binutils
go build main.go
  • 一个postgresql数据库服务,我在这里使用的是一个免费的数postgresql数据库服务: MemFireDB,运行在公有云上,无需自己部署,一键注册即可访问。
  • SqliteToPostgres程序,下载地址https://www.crsky.com/soft/217259.html

开搞了

SqliteToPostgres操作非常简单,安装完成并启动后,只需要按照向导一步步操作

第一步,选择要迁移的sqlite文件,然后点击“ok”,或者为了验证文件是否有损坏,也可以点击“Connect”进行测试,显示Connected代表文件完好

image.png

第二步,登录MemFireDB获取服务地址、用户名、数据库的名称,并点击“Connect”进行测试,显示“Connected”代表服务连接正常,我们点击“ok”进行下一步操作

image.png

第三步,选择要导入的数据表,此处我们选择“Import All Tables”以及“Select All”导入所有表,剩下的步骤一直点“Next”即可

image.png

最后,导入完成后,登录MemFireDB查看我们导入的数据

image.png

Thanks

SqliteToPostgres是一款功能强大、使用便捷的软件,傻瓜式的操作可以让我们快速的把SQLite中的数据导入到PostgreSQL中,在数据备份,应用迁移工作中起到事半功倍的效果。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值