Sqoop + Postgresql:如何防止 table 名称周围的引号
Sqoop + Postgresql: how to prevent quotes around table name
我正在尝试将 table 从 Postgresql 导入到 HDFS 上的 Parquet 文件。
这是我的做法:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table foo.bar \
--target-dir /user/me/bar \
--as-parquetfile
然后我得到
INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "foo.bar" AS t LIMIT 1
ERROR manager.SqlManager: Error executing statement: org.postgresql.util.PSQLException: ERROR: relation "foo.bar" does not exist
SELECT t.* FROM "foo.bar" AS t LIMIT 1
确实不起作用,但 SELECT t.* FROM foo.bar AS t LIMIT 1
确实有效。所以问题是 table 名字被引用了。我尝试以不同的方式提供 --table
参数,但没有效果。
我该如何解决?
编辑
正如您链接的文档所述,有一个 --schema
参数。由于某种原因,sqoop help import
.
中未提及
另一个奇怪的是
--table bar --schema foo
还是不行,但是
--table bar -- --schema foo
会。
无论如何,现在可以了。感谢您链接相关文档部分!
table 名称是 bar
,foo
是架构的名称。
根据 docs 你应该这样做:
sqoop import \
(...)
--table bar \
--schema foo
(...)
根据documentation需要单独指定schema:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table bar \
--schema foo \
--target-dir /user/me/bar \
--as-parquetfile
我正在尝试将 table 从 Postgresql 导入到 HDFS 上的 Parquet 文件。
这是我的做法:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table foo.bar \
--target-dir /user/me/bar \
--as-parquetfile
然后我得到
INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "foo.bar" AS t LIMIT 1
ERROR manager.SqlManager: Error executing statement: org.postgresql.util.PSQLException: ERROR: relation "foo.bar" does not exist
SELECT t.* FROM "foo.bar" AS t LIMIT 1
确实不起作用,但 SELECT t.* FROM foo.bar AS t LIMIT 1
确实有效。所以问题是 table 名字被引用了。我尝试以不同的方式提供 --table
参数,但没有效果。
我该如何解决?
编辑
正如您链接的文档所述,有一个 --schema
参数。由于某种原因,sqoop help import
.
另一个奇怪的是
--table bar --schema foo
还是不行,但是
--table bar -- --schema foo
会。
无论如何,现在可以了。感谢您链接相关文档部分!
table 名称是 bar
,foo
是架构的名称。
根据 docs 你应该这样做:
sqoop import \
(...)
--table bar \
--schema foo
(...)
根据documentation需要单独指定schema:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table bar \
--schema foo \
--target-dir /user/me/bar \
--as-parquetfile