2010-04-27 151 views
0

我想知道我的最佳選擇是從Excel文件導入數據,每週或每月。起初,我認爲我會使用SSIS,但經過與看似簡單的任務鬥爭後,我開始重新思考我的計劃。只需手工編寫SQL或使用SSIS包的服務,會更好還是更簡單?基本過程如下:SQL Server 2005從Excel導入

  1. 一個單獨的進程將下載.xls文件到本地文件共享。
  2. xls文件將具有如下文件名:'myfilename MON YY'。
  3. 我將需要從文件名中讀取月份和年份,將其重新格式化爲sql日期,然後查詢DimDate表以找到相應的日期鍵。
  4. 對於每行(前2個標題行之後),使用日期鍵插入數據,除非行是總行,則忽略。

這裏有一些我已經遇到與SSIS的問題: 我可以分析從平面文件數據源的日期字符串,但似乎無法與Excel數據源做到這一點。此外,一旦解析,我似乎無法將字符串轉換爲日期以執行日期鍵的查找。例如,我想做的事情是這樣的:從DimDate

選擇DateKey其中ActualDate =轉換(日期時間,'01 - 」 + 'JAN-10',120)

,但我不認爲可以在表達式構建器中使用'convert'或'datetime'關鍵字。我一直無法找到我可以編輯SQL的位置,忽略前兩行數據。

我對使用SSIS非常懷疑,因爲它看起來像是一種可以更有效地完成自己編寫SQL的事情的Kludgy方法,但我可能會被迫使用SSIS。思考?

回答

3

SSIS絕對是一個方向。

爲了解決您的問題:(DT_DBTIMESTAMP)是您想要的轉換。語法有點不同。例如轉換您的示例日期,我會用:

(DT_DBTIMESTAMP)"01/01/2010" 

如果您使用的是表達一個派生列,以取代您的字符串日期(或創建一個新列),然後你可以做對datetime列的查詢中一個DB。

如果您需要排除前兩行,您需要編寫一條SQL語句來查詢文件(而不是Excel文件讀取器源)或使用條件分割來根據任何條件將它們丟棄每次進口都可以重複。

平面文件更易於使用,並允許您丟棄x個最初的行。

+2

我同意肯尼思 - SSIS是使用的工具。 關於日期格式的一個評論 - 我會使用YYYY-MM-DD - 它是ISO/SQL明確的格式。 – 2010-04-28 17:38:55