自学内容网 自学内容网

【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)


原文地址:https://blog.csdn.net/zkq_1986/article/details/145185815

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!