2013-04-04 61 views
3

我们使用Sqoop将数据从配置单元导出到SQL Server。新数据总是附加到SQL Server中的现有数据。Sqoop:在从Hadoop导出数据之前截断SQL Server表格

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

+1

我有同样的问题! – 2013-04-04 10:08:04

+2

我对Squoop一无所知,但它似乎是一个命令行工具,所以大概可以将它包装在连接到SQL Server的脚本中,并在导入运行之前截断表格? – Pondlife 2013-04-04 14:58:22

回答

3

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

5

您可以使用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假定蜂巢表是使用默认分隔符。