2012-07-04 101 views
1

我有多個文件按慣例命名:「data_YYYY.MM.xslx」 我需要加載所有這些文件到一個qlikview表,但是當我這樣做時:如何使多個文件加載到一個表的加載腳本

Tab: 
load Name, Number from [data_*.csv]; 

我得到每個文件的Tab,Tab-1,Tab-2文件。

I`ve也tryed做:

Tab: 
add load Name, Number from [data_*.csv]; 

具有同等效力。

如果有人知道如何做到這一點,請幫助。

回答

3

這劈爲我工作:

tmp: 
LOAD @1 inline [@1]; 
Tab: 
Concatenate load Name, Number from [data_*.csv]; 
+0

感謝,對連擊負荷工作。對於我的情況:從[data _ *。csv]加載名稱,號碼;現在只會創建2個表格,但使用合成鍵連接,我不喜歡。 – zhihong

0

這裏是如果文件名是不同的另一種方式

標籤: 負荷名稱,從[data_1.csv]數量; 加入(Tab) 加載名稱,來自[data_2.csv]的數字;

+1

感謝您的回答。你的方式將工作,如果名稱靜態和以前知道。我確信這對一些人會有幫助。 – gabba

1

您可以通過這種方式做到這一點:

Load * from data_*.csv; 

在文件名中只需用一個面具。

+0

SPASIBO(謝謝)Fedya!用你的方式,我得到每個文件的Tab,Tab-1,Tab-2表。看看我的問題。 – gabba

5

這個問題沒有意義,除非你省略了一些細節。

標籤: 負載姓名,號碼從[數據_ * CSV](TXT);

的QlikView 隱式的聲明如附加的所有數據爲原始表 '選項卡'

請注意括號中指定的文件格式。

當一個表與所創建的表完全相同的字段名加載時,會隱式地追加數據。因此,在您的示例中,遇到的第一個文件構成了該文件中的數據負載。假設字段名稱的確按照您的問題進行了引用,那麼結果表中應該包含兩個字段:「名稱」和「數字」。當通過通配符匹配遇到第二個文件時,會發生第二個加載,並將該數據附加到表格「Tab」。

如果您不希望依賴IMPLICIT連接(QlikView術語用於將數據附加到現有表),那麼您可以編寫一個FOR循環來加載文件,而不是使用明確的CONCATENATE加載前綴來指向您希望的表將數據附加到。

E.g.

// QV招 '聲明' 的表

選項卡: LOAD空()AS名稱 自動生成(1) WHERE RECNO()< 0;

FOR EACH file IN filelist('data_ *。csv')

CONCATENATE('Tab') LOAD * FROM [$(file)](txt);

下一個文件

1

而對於完整性與循環的一種方式(這裏使用QVD文件):

FOR Each db_schema in '2013-07','2013-08','2013-09' 
LOAD ...., db_schema 
FROM `x-$(db_schema)`.`qvd` (qvd); 
next; 

(知道名字)