Sqoop导出可以创建一个新表吗?

时间:2013-04-15 22:51:59

标签: export hdfs rdbms sqoop

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

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

如果是,是否可以与Oracle合作?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分: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

答案 2 :(得分: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。 TemplateTableName是Oracle中存在的表   在执行Sqoop命令之前。

PS。您必须使用--direct sqoop export选项来激活sqoop direct mode ='Data Connector for Oracle and Hadoop'(又名OraOOP - 旧名称)。