Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用批处理文件在QlikView中导入文本文件或压缩文件_Batch File_Qlikview - Fatal编程技术网

Batch file 使用批处理文件在QlikView中导入文本文件或压缩文件

Batch file 使用批处理文件在QlikView中导入文本文件或压缩文件,batch-file,qlikview,Batch File,Qlikview,我在一个文件夹中有多个文本文件。我需要每天将这些文件导入QlikView。是否有任何方法可以使用批处理/命令文件导入这些文件 此外,我可以将压缩文件导入QlikView吗?我不确定加载脚本是如何设置的,但是如果您希望刷新QlikView文档,并且您没有QlikView服务器,那么您可以按如下方式使用批处理文件: "<Path To QlikView>\QV.exe" /r "ReportToReload.qvw" “\QV.exe”/r“reportoreload.qvw” /r

我在一个文件夹中有多个文本文件。我需要每天将这些文件导入QlikView。是否有任何方法可以使用批处理/命令文件导入这些文件


此外,我可以将压缩文件导入QlikView吗?

我不确定加载脚本是如何设置的,但是如果您希望刷新QlikView文档,并且您没有QlikView服务器,那么您可以按如下方式使用批处理文件:

"<Path To QlikView>\QV.exe" /r "ReportToReload.qvw"
“\QV.exe”/r“reportoreload.qvw”
/r
命令参数告诉QlikView打开文档,重新加载文档,然后保存并关闭文档。但是,您必须确保QlikView用户首选项“重新加载后保持进度打开”未启用,否则重新加载文档后,进度对话框将等待您关闭

然后,您可以通过Windows的任务计划程序或您喜爱的计划工具计划此批处理文件的运行


QlikView无法导入压缩文件(例如Zip/RAR等),因此您需要先使用批处理脚本提取这些文件。

您可以循环查看目录结构并读取加载脚本中的现有文件

LET vCustCount = NoOfRows('Kunde');
TRACE Anzahl Kunden: $(vCustCount);

FOR i=1 TO $(vCustCount) 
    LET vNameKunde = FieldValue('name_kunde',$(i));
    FOR each vFile in filelist ('$(vNameKunde)/umsatz.qvd')
    TRACE $(vFile) hat eine umsatz.qvd;

        LOAD ....
         FROM [$(vFile)] (qvd);
    NEXT vFile 
NEXT
在这种情况下,我加载预先计算的qvd文件,但您也可以使用txt、csv

正如我所看到的,QlikView无法导入压缩文件。如果需要读取压缩文件,可以使用解压工具对其进行批处理

你应该看看 21.1从文件加载数据 在参考手册中


下面的脚本检查qvd是否存在。如果是,则更新它,否则创建一个新的qvd

IF NOT isNull(qvdCreateTime('G:\TestQvd\Data.qvd')) THEN
   data2:
    load * from G:\TestQvd\Data.qvd(qvd);
    FOR each vFille in filelist ('G:\Test\*')                   
        LOAD * FROM
        [$(vFille)]
        (txt, codepage is 1252, explicit labels, delimiter is spaces, msq); 
         NEXT vFille   
 ELSE
    FOR each vFille in filelist ('G:\Test\*')   
     data2:                
        LOAD * FROM
        [$(vFille)]
        (txt, codepage is 1252, explicit labels, delimiter is spaces, msq); 
         NEXT vFille                   
 ENDIF 
        STORE data2 into G:\TestQvd\Data.qvd;    
   exit Script;

你能看看我问题中的剧本吗。怎么了?对不起,我现在没时间。你说:但是它没有给出预期的结果。结果如何?尝试使用少量数据并尝试跟踪输出。尽管此答案仅回答了问题的第二部分,因为您实际上并没有使用源文件列表,而只是将所有内容加载到文件夹中,但您可以使用通配符加载来简化操作:data2:load*FROM[G:\Test*](txt,代码页为1252,显式标签,分隔符为空格,msq);如果不为空(qvdCreateTime('G:\TestQvd\Data.qvd')),则数据2:LOAD*FROM G:\TestQvd\Data.qvd(qvd);End如果有新问题,请提出新问题。不要将其编辑到原始帖子中。