2013-04-04 62 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假定蜂巢表是使用默認分隔符。