【问题标题】:Importing text files or compressed files in QlikView using a batch file使用批处理文件在 QlikView 中导入文本文件或压缩文件
【发布时间】:2014-09-01 23:34:37
【问题描述】:

我在一个文件夹中有多个文本文件。我需要每天将这些文件导入 QlikView。有没有办法使用批处理/命令文件导入这些文件?

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

【问题讨论】:

  • 如果您有新问题,请提出新问题。请勿将其编辑到您的原始帖子中。

标签: batch-file qlikview


【解决方案1】:

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

"<Path To QlikView>\QV.exe" /r "ReportToReload.qvw"

/r 命令参数告诉 QlikView 打开文档,重新加载它,然后保存并关闭文档。但是,您必须确保未启用 QlikView 用户首选项选项“重新加载后保持进度打开”,否则进度对话框将在文档重新加载后等待您将其关闭。

然后您可以安排此批处理文件通过 Windows 的任务计划程序或您最喜欢的计划工具运行。

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

【讨论】:

    【解决方案2】:

    您可以遍历目录结构并读取加载脚本中的现有文件。

    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 执行相同操作...

    正如 i_saw_drones 提到的,QlikView 无法导入压缩文件。如果需要读取压缩文件,可以使用解压工具批量操作。

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

    HTH

    【讨论】:

    • 你能看看我的问题中的脚本吗?它有什么问题?
    • 对不起,现在没时间。你说:但它没有给出预期的结果。它给出了什么结果?尝试使用少量数据并尝试TRACE您的输出。
    【解决方案3】:

    以下脚本检查 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); IF NOT isNull(qvdCreateTime('G:\TestQvd\Data.qvd')) THEN data2: LOAD * FROM G:\TestQvd\Data.qvd(qvd); ENDIF
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多