10

可以使用 Sqoop 将数据从 HDFS 导出到 RDBMS 表。但似乎我们需要有现有的表。

是否有一些参数可以告诉 Sqoop 执行“CREATE TABLE”并将数据导出到这个新创建的表?

如果是,它会与 Oracle 一起工作吗?

4

3 回答 3

10

恐怕 Sqoop 目前不支持在 RDBMS 中创建表。Sqoop 使用 RDBMS 中的表来获取元数据(列数及其数据类型),所以我不确定 Sqoop 可以从哪里获取元数据来为您创建表。

于 2013-04-16T02:18:43.763 回答
3

您实际上可以通过 sqoop eval 执行任意 SQL 查询和 DDL,至少使用 MySQL 和 MSSQL。我希望它也可以与 Oracle 一起使用。MSSQL 示例:

sqoop eval --connect 'jdbc:sqlserver://<DB SERVER>:<DB PORT>;
database=<DB NAME>'  --query "CREATE TABLE..."
--username <USERNAME> -P
于 2016-09-07T21:24:15.740 回答
0

我注意到你也使用 Oracle。某些 sqoop 供应商特定的 sqoop 连接器支持这一点,包括 Oracle。Sqoop 的 Oracle 直接连接模式可以选择这样做

https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_create_oracle_tables

24.8.5.4。创建 Oracle 表

-Doraoop.template.table=模板表名

通过复制 TemplateTableName 的结构和数据类型来创建 OracleTableName。TemplateTableName 是执行 Sqoop 命令之前存在于 Oracle 中的表。

附言。您必须使用 --direct sqoop 导出选项来激活 sqoop 直接模式 = 'Data Connector for Oracle and Hadoop'(又名 OraOOP - 旧名称)。

于 2016-11-30T23:32:31.380 回答