将vertica数据导入sqoop

时间:2014-06-05 12:02:46

标签: hadoop jdbc sqoop vertica

我在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提及架构名称的任何帮助吗?

2 个答案:

答案 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'