暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 starryHP 2021-06-15
522

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数据库服务,一个免费的数据库云服务平台MemFireDB,地址https://memfiredb.com,无需自己部署,运行在公有云上,一键注册即可访问。

SqliteToPostgres程序,下载地址https://www.crsky.com/soft/217259.html

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

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

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

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

最后,导入完成后,登录https://memfiredb.com查看我们导入的数据

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

最后修改时间:2021-06-15 17:51:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论