【问题标题】:psql export query output to a new table in a new sqlite3 dbpsql 将查询输出导出到新的 sqlite3 数据库中的新表
【发布时间】:2017-11-22 03:19:14
【问题描述】:

使用psql,我们可以将查询输出导出到 csv 文件。

psql -d somedb -h localhost -U postgres -p 5432 -c "\COPY (select * from sometable )  TO 'sometable.csv' DELIMITER ',' CSV HEADER;"

但是,我需要将查询输出导出到新 sqlite3 数据库中的新表。

我也查看了pg_dump,但没能找到解决办法。

我想在新的 sqlite3 db 中将其导出为新表而不进行任何中间 CSV 转换的原因是因为

  1. 查询输出将达到 GB,我有磁盘空间限制 - 所以与其导出 csv 文件然后创建一个新的 sqlite3 数据库,不如一次性完成

【问题讨论】:

    标签: sql postgresql sqlite


    【解决方案1】:

    我的解决方案是使用标准的 INSERT SQL 语句。

    需要相同的表格方案。 grep 命令删除有问题的字符,例如-- 或空白行。

    pg_dump --data-only --inserts --table=sometable DBNAME | grep -v -e '^SET' -e '^$' -e '^--' | sqlite3 ./target.db
    

    希望对你有所帮助。

    【讨论】:

    • 有帮助 - 我使用命令 pg_dump -U postgres --data-only --inserts --table=\"myPgTable\" myPgDb | grep -v -e '^SET' -e '^$' -e '^--' | sqlite3 ./mySqlite3Db.db 对其进行了初步尝试 - 它会引发一些错误行 Error: near line 8: near "SET": syntax error 但是我看到 mySqlite3Db.db 大小继续增加 - 不能说这是否是万无一失,因为该过程非常缓慢 - 运行一个多小时,只有 4MB 的数据导出 - 源表有大约 7500 万条记录 - 有什么提高速度的想法吗? pg_dump 命令输出粘贴在这里 - pastebin.com/rP4bStcb
    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2021-05-15
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多