我们正在使用 Sqoop 将数据从配置单元导出到 SQL Server。新数据始终附加到 SQL Server 中的现有数据。
是否可以在开始导出之前通过 Sqoop 截断 SQL Server 表?
我们正在使用 Sqoop 将数据从配置单元导出到 SQL Server。新数据始终附加到 SQL Server 中的现有数据。
是否可以在开始导出之前通过 Sqoop 截断 SQL Server 表?
您可以使用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 表使用默认分隔符。
Sqoop 不是通用查询工具,“eval”功能仅用于评估目的,不应在生产模式下使用。您始终可以将简单的 Java 代码放在一起,这些代码将以最适合您的用例的方式执行此操作。
有实现 sqoop --truncate 选项的功能请求 https://issues.apache.org/jira/browse/SQOOP-1313
如果您有兴趣,请在该 JIRA 页面上投票。