使用CockroachDB将Postgres转储导入表中

时间:2017-04-10 21:20:37

标签: cockroachdb

从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"

任何指导?

1 个答案:

答案 0 :(得分:2)

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

你需要做两件事:

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

    生成.sql文件后,您需要在导入之前执行一些编辑步骤:

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

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

    3. 检查任何其他限制条件,以确保它们在表格中正确列出。
    4. 删除所有不受支持的元素,例如数组。
    5. 导入数据

      重新格式化文件后,您可以通过psql

      导入该文件
      $ psql -p [port] -h [node host] -d [database] -U [user] < [file name].sql
      

      作为参考,CockroachDB使用以下默认值:

      • [port] 26257
      • [user] root
相关问题