当前位置:   article > 正文

pgloader通过Windows-Ubuntu互联——实现SQLite数据导入PostgreSQL_pgloader下载

pgloader下载

通过pgloader将SQLite大量数据快速导入PostgreSQL

需求

因为公司最近业务需求,需要一个可管理大量数据的数据库管理系统存储和管理相关数据。选用的PostgreSQL,我自己觉得免费又好看哈哈哈,因为还没正式开始用,使用感受将在后续进行补充。
原数据:SQLite数据,.db存储方式
现在需要:整个原始数据库导入到PostgreSQL

pgloader

pgloader可以将各种文件数据(如csv、DBF等),数据库(如SQLite、MySQL)等导入到PostgreSQL中。据我这两天查询资料发现,pgloader只适用于Linux系统,Windows没查到使用方法。尝试导入的过程中加上pgloader一共试了三种方法,另外两种都是逐行写入(数据量很小可以使用),因为公司的数据量很大,均花费超过半个小时的时间,而使用pgloader整个导入过程只花费了三分钟!!!
官方说明:pgloader

pgloader安装

借鉴网上的方法,最广泛的是使用docker安装(系统:win11,只记录我的安装过程和问题解决)

docker

下载网址:Docker,在整个过程中,只打开过一次哈哈哈,配好WSL2后就没打开过了,还不太会用,应该是需要拉取镜像的时候就用docker命令在命令行拉取吧?这个后续学习一下,感觉挺有用的。

配置WSL2

刚打开docker时因为没有Linux环境,所以提示安装WSL2,提示教程见配置链接。在教程中我下载的是Ubuntu22.04版本。

获取pgloader

Apt获取(我使用的这个):

打开Ubuntu,输入:sudo apt-get install pgloader
这里我报错了,显示unable to locate package pgloader,更新apt即可:sudo apt-get update
拉取镜像及显示版本等信息:

Docker获取:
docker pull dimitri/pgloader
docker run --rm --name pgloader dimitri/pgloader:latest pgloader --version
docker run --rm --name pgloader dimitri/pgloader:latest pgloader --help
  • 1
  • 2
  • 3

到此为止pgloader就安好啦,最难的也是花我时间最多的就是后面的load过程了。

Load SQLite数据

我的原始数据,和我目标存储位置都在Windows下面,所以难点在于Windows和Ubuntu怎么共享这些文件以及如何远程连接。

编写迁移脚本

命令行输入:vim pgload.load
写入以下数据:(可以参考pgloader官方文档,我写的只是我需要的,后续权限我会用psql添加)

LOAD DATABASE
        FROM sqlite:///mnt/winshare/xxx.db
        INTO postgresql://postgres:密码@实际ip地址:5432/xxx

    with include drop,create tables,create indexes,reset sequences,workers=8,concurrency=1
;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

说明:

  • from这一行是SQLite数据地址,为了获取到Windows的db文件,我在Windows创建了一个共享文件夹,Ubuntu里也创建了一个对应的文件夹以共享获取到Windows的数据,/mnt/winshare/就是我Ubuntu里的地址,SQLite数据我放在win的共享文件夹里的。之前其他都设置好了结果显示连接、读取失败(当时两根斜线),后面加了一根斜线就成功了!我感觉是因为这是Ubuntu下的地址,有知道的可以告诉一下我~
    Windows共享文件夹设置链接:win11共享文件夹设置
    Ubuntu挂载共享文件夹设置链接:Ubuntu挂载共享文件夹
  • into这一行是postgresql的地址,我是做的远程连接,因为我的postgresql在Windows系统下。其中密码对应你的postgresql登录密码,实际ip是我win的IP地址,xxx是要导入的数据库名称。注意!这个数据库是你已经在postgresql创建好的。
  • with后面是一些数据库的权限设置,在pgloader官方说明文档里有,对应有不同数据库的语法说明。
  • load database是不变的,表明你导入的数据是数据库而不是文件。
  • postgresql中语句一定要用分号结尾!

pgloader执行脚本文件

命令行输入:pgloader pgload.load
中途我报了很多次错误,比如:

  • 脚本中with字段出错,这个去找对应的说明或者你不需要就删除就好了,pgloader也会提醒你可能是什么原因;
  • from不能访问到我共享的SQLite数据,这个我添加了一个斜线后就成功了,幸运~;
  • postgresql连接失败和超时,这个设置了很多,尤其是Windows共享文件夹那里,我的本地账户没有密码,但要远程能访问上是一般需要密码的,所以我找了个解决办法:远程无密码,然后就成功啦。

导入成功

展示一下导入成功的信息哈哈哈哈(骄傲),但这个毕竟是load data,所以数据库中的关系的约束、索引是没有的,目前我还不知道怎么在load的时候将原数据库的配置一起导入:
好快哈哈哈
我用python写入和psql写入均需要半个小时以上哈哈哈,这个环境配好和脚本写好之后只需要三分钟!!!开心开心~

注意:

  1. Linux命令和Ubuntu环境我都不是很熟(学过但忘记了),术语或者操作有什么不对的地方可以指出来互相学习,友好交流呀~
  2. 这个只是我自己的记录,因为我看见很少有通过这种方式实现功能哈哈哈,大部分大佬都是直接在Linux环境下操作的,一方面是因为我只是个实习生不敢搞公司电脑,另一方面我确实不知道怎么实现了哈哈哈,有哪里操作有疑问可以提出来大家一起解决,友好交流呀~
  3. 我想其他数据库类型的转换应该是类似的操作,如果有更方便的方法请务必告诉我!!!虽然我也不一定用上。
  4. 建立的共享文件夹可以方便其他用户远程存放和读取数据,这样我就可以直接将其导入到PostgreSQL了哈哈哈我是这样想的~

相关参考:

  1. pgloader 安装 & 使用
  2. 其他在文中已经引用,感谢~
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/401359
推荐阅读
相关标签
  

闽ICP备14008679号