Sqoop:在从Hadoop导出数据之前截断SQL Server表

时间:2013-04-04 10:07:08

标签: sql-server hadoop sqoop

我们正在使用Sqoop将数据从配置单元导出到SQL Server。新数据始终附加到SQL Server中的现有数据。

是否可以在开始导出之前通过Sqoop截断SQL Server表?

3 个答案:

答案 0 :(得分:8)

您可以使用sqoop eval在数据库上执行任意SQL。这将允许您截断表而不“离开”Sqoop。例如:

sqoop eval --connect 'jdbc:sqlserver://1.1.1.1;database=SomeDatabase;username=someUser;password=somePassword' --query "TRUNCATE TABLE some_table"

sqoop export --connect 'jdbc:sqlserver://1.1.1.1;database=SomeDatabase;username=someUser;password=somePassword' --export-dir /path/to/someTable/on/HDFS --table some_table --fields-terminated-by \001

--fields-terminated-by \001假设Hive表使用默认分隔符。

答案 1 :(得分:3)

Sqoop不是一般查询工具,“eval”功能仅用于评估目的,不应在生产模式下使用。您总是可以将最简单的Java代码组合在一起,以最适合您的用例的方式执行此操作。

答案 2 :(得分:0)

有一个功能请求来实现sqoop --truncate选项 https://issues.apache.org/jira/browse/SQOOP-1313

如果您有兴趣,请在JIRA页面上投票。