如何在pgloader连接字符串中指定schema?添加语句后执行失败
在pgloader中指定目标Schema的正确方法
你直接写SET search_path会报错,是因为pgloader的脚本有自己的语法规则,不支持直接插入独立的SQL命令。下面是两种可行的解决办法:
方法1:在PostgreSQL连接字符串中直接指定Schema
把目标Schema参数加到INTO的连接字符串末尾,用?schema=的形式:
LOAD DATABASE FROM mysql://<username>:<password>@localhost:3307/airflow INTO pgsql://<username>:<password>@localhost:5437/airflow?schema=your_schema WITH include no drop, data only;
方法2:用BEFORE LOAD DO执行SQL命令
如果需要执行更多初始化SQL(比如设置search_path),可以放在pgloader的BEFORE LOAD DO块里,这是它支持的语法:
LOAD DATABASE FROM mysql://<username>:<password>@localhost:3307/airflow INTO pgsql://<username>:<password>@localhost:5437/airflow WITH include no drop, data only BEFORE LOAD DO $$ SET search_path TO your_schema; $$;
注意:pgloader的脚本语法要求所有命令都要符合它的DSL规范,不能直接写游离的SQL语句,这就是你之前遇到解析错误的原因。
内容的提问来源于stack exchange,提问作者Prem
相关产品推荐
相关产品推荐

