关于数据库:如何将数据从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/21…

开搞了

SqliteToPostgres操作非常简单,装置实现并启动后,只须要依照向导一步步操作

第一步,抉择要迁徙的sqlite文件,而后点击“ok”,或者为了验证文件是否有损坏,也能够点击“Connect”进行测试,显示Connected代表文件完整

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

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

最初,导入实现后,登录MemFireDB查看咱们导入的数据

Thanks

SqliteToPostgres是一款功能强大、应用便捷的软件,傻瓜式的操作能够让咱们疾速的把SQLite中的数据导入到PostgreSQL中,在数据备份,利用迁徙工作中起到事倍功半的成果。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理