2012-07-04 91 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; 

(知道名字)