我们正在使用Sqoop将数据从配置单元导出到SQL Server。新数据始终附加到SQL Server中的现有数据。
是否可以在开始导出之前通过Sqoop截断SQL Server表?
答案 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页面上投票。