【postgres】sqlite格式如何导入postgres数据库

step1 在ubuntu系统安装pgloader(centos系统难以直接通过yum安装,如果源码安装的话,会比较费劲)

step2,执行如下python脚本

from pathlib import Path

import subprocess

dataset_dir = Path('/app/sqlite_to_pg/chase-page/data/database/')

遍历目录获取所有文件路径

file_paths = [str(p.absolute()) for p in dataset_dir.rglob('*') if p.is_file()]

for fn in file_paths:

创建或更新 a.load 文件内容

load_file_content = f"""

LOAD DATABASE

FROM sqlite://{fn}

INTO pgsql://postgres@192.168.1.14:5432/tablegpt_test_chase

WITH include drop, -- 在导入前删除已存在的表

create tables, -- 自动创建目标表

create indexes, -- 创建索引

reset sequences -- 重置序列

CAST

type number to text,

type time to text,

type string to text;

"""

写入 a.load 文件

with open('a.load', 'w') as file:

file.write(load_file_content)

执行 pgloader 命令

command = ['pgloader', 'a.load']

try:

result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

print("Command executed successfully")

print("Output:", result.stdout)

except subprocess.CalledProcessError as e:

print("An error occurred while executing the command:")

print("Exit status:", e.returncode)

print("Error output:", e.stderr)

相关推荐
Y001112365 分钟前
Day10-MySQL-事物
数据库·sql·mysql
毕设源码-朱学姐6 分钟前
【开题答辩全过程】以 高效便捷的民航订票系统为例,包含答辩的问题和答案
java
轩情吖9 分钟前
MySQL之用户管理
数据库·c++·后端·mysql·权限管理·用户管理
零雲14 分钟前
java面试:Spring事务失效的场景有哪些?
java·数据库·面试
二月十六16 分钟前
运行 ‘XXXX‘ 时出错 运行 XXXX时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。
java·jar
wenlonglanying23 分钟前
mysql之联合索引
数据库·mysql
Aloha_up26 分钟前
redis与数据库的一致性问题分析
数据库·redis·缓存
牢七33 分钟前
jfinal_cms-v5.1.0 审计黑盒
数据库
zzh0811 小时前
MySQL数据库操作笔记
数据库·笔记·mysql
6+h1 小时前
【Redis】底层原理解析(SDS / 跳表 / IO多路复用 / 单线程模型)
数据库·redis·bootstrap