我在mapr集群上将vertica数据注入sqoop1。我使用以下查询:
sqoop import -m 1 --driver com.vertica.jdbc.Driver --connect "jdbc:vertica://*******:5433/db_name" --password "password" --username "username" --table "schemaName.tableName" --columns "id" --target-dir "/t" --verbose
此查询给出了错误
Caused by: com.vertica.util.ServerException: [Vertica][VJDBC](4856) ERROR: Syntax error at or near "."
我阅读了https://groups.google.com/a/cloudera.org/forum/#!msg/cdh-user/xIBwvc_eOp0/TvhANQfvcv4J以获取有关此内容的更多信息,但由于他们在Sqoop2上提供了结果,因此没有用。
当我运行此查询时:
sqoop import -m 1 --driver com.vertica.jdbc.Driver --connect "jdbc:vertica://*******:5433/db_name" --password "password" --username "username" --table "tableName" --columns "id" --target-dir "/t" --verbose
它出错:关系“tableName”不存在。
我也在sqoop库中添加了所需的vertica-jdk jar。
有关如何在sqoop中为vertica提及架构名称的任何帮助吗?
答案 0 :(得分:2)
您可以在连接字符串中指定要使用的架构名称,如下所示:
- connect" jdbc:vertica:// *******:5433 / db_name?searchpath = myschema"
答案 1 :(得分:1)
我将语句更改为--query,schema.table在那里工作正常。所以陈述是:
sqoop import -m 1 --driver com.vertica.jdbc.Driver --connect "jdbc:vertica://*****:5433/dbName" --password "*****" --username "******" --target-dir "/tmp/cdsdj" --verbose --query 'SELECT t.col1 FROM schema.tableName t where $CONDITIONS'