【问题标题】:Import Postgres dump into a table with CockroachDB使用 CockroachDB 将 Postgres 转储导入表
【发布时间】:2017-04-10 21:20:36
【问题描述】:

从 PostgeSQL 执行 pg_dump 后,我尝试将 .sql 文件导入 CockroachDB,但收到以下错误:

ERROR:  unknown variable: "STATEMENT_TIMEOUT"
ERROR:  unknown variable: "LOCK_TIMEOUT"
ERROR:  unknown variable: "IDLE_IN_TRANSACTION_SESSION_TIMEOUT"
SET
SET
ERROR:  unknown variable: "CHECK_FUNCTION_BODIES"
SET
ERROR:  unknown variable: "ROW_SECURITY"
SET
ERROR:  unknown variable: "DEFAULT_TABLESPACE"
ERROR:  unknown variable: "DEFAULT_WITH_OIDS"
CREATE TABLE
ERROR:  syntax error at or near "OWNER"

有什么指导吗?

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

    CockroachDB 特别支持使用psql,它支持COPY 命令(比批处理的INSERT 语句更快)。

    你需要做两件事:

    1. 清理 SQL 文件
    2. 将其导入 CockroachDB(听起来您已尝试过,但我会在此处为需要它们的其他人提供这些步骤):

    清理 SQL 文件

    生成.sql文件后,需要在导入前执行几个编辑步骤:

    1. 从文件中删除除CREATE TABLECOPY 语句之外的所有语句。
    2. 手动将表的PRIMARY KEY 约束添加到CREATE TABLE 语句。

      这必须手动完成,因为 PostgreSQL 在创建表后尝试添加主键,但 CockroachDB 要求在创建表时定义主键。

    3. 查看任何其他约束以确保它们在表格中正确列出。
    4. 删除所有不受支持的元素,例如数组。

    导入数据

    文件重新格式化后,可以通过psql导入:

    $ psql -p [port] -h [node host] -d [database] -U [user] < [file name].sql
    

    作为参考,CockroachDB 使用这些默认值:

    • [port]26257
    • [user]: root

    【讨论】:

    • 有没有人写过一个清理工具可以做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2021-12-12
    • 2020-12-21
    相关资源
    最近更新 更多