1

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

有什么指导吗?

4

1 回答 1

2

CockroachDB 对 using 有特殊的支持psql,它支持COPY命令(比批处理INSERT语句更快)。

你需要做两件事:

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

清理 SQL 文件

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

  1. 从文件中删除除CREATE TABLEand语句之外的所有COPY语句。
  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]:
于 2017-04-10T21:20:36.767 回答