# 使用 QVD 文件

QVD (QlikView Data) 文件是包含从 Qlik Sense 应用程序或脚本中导出的数据表的文件。QVD 是本地 Qlik 格式，只能由 Qlik Sense 或 QlikView 写入和读取。当从脚本中读取数据时该文件格式可提升速度，同时又非常紧凑。从 QVD 文件读取数据通常比从其他数据源读取快 10 到 100 倍。

QVD 文件可以用两种模式读取：标准（快速）和优化（超快）。所选模式由脚本引擎自动确定。

对于优化的加载存在一些限制。可重命名字段，但是此处提及的任何操作将禁用优化的加载并得到标准加载。

* 加载的字段上的任何转换。
* 使用 where 子句使得 Qlik Sense 将记录解压。
* 在加载的字段上使用映射。

## QVD 文件的目的

QVD 文件可用于许多用途并且有一个以上可用在任何给定的情况中。至少可轻易识别四种主要的用途：

* 降低数据库服务器上的加载量

  从外部数据源提取的数据量也可大幅度降低。这可减少外部数据库的工作量和网络流量。而且，当几个脚本共享相同的数据时，只需要将这些数据从源数据库加载到 QVD 文件一次即可。其他应用程序或脚本可以利用此 QVD 文件中相同的数据。

* 合并多个应用程序数据

  使用 binary 脚本语句，数据可以从单个 应用程序 加载到另一个应用程序或脚本中，但使用 QVD 文件，加载脚本可以组合来自任意数量的应用程序或其他数据源的数据。例如，这使得应用程序和脚本能够合并来自不同业务部门的类似数据。

* 增量

  在许多常见情况下，QVD 功能可用于简化增量加载，通过从不断扩大的数据库中加载新记录。

  有关更多信息，请参阅[加载新的和更新的记录与增量加载](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/use-QVD-files-incremental-load.htm)。

  信息注释

  要了解 Qlik 社区是如何使用 Qlik Automate 来改善 QVD 加载时间的，请参阅[如何使用自动化来分割 QVD 以改善重新加载](https://community.qlik.com/t5/Official-Support-Articles/How-to-split-QVDs-using-an-automation-to-improve-reloads/ta-p/1997153)

## 创建 QVD 文件

可以使用加载脚本中的 Store 命令创建和命名 QVD 文件。在脚本中说明要将先前读取的表格或其部分导出到您选定位置上的一个明确命名文件。

有关更多信息，请参阅[Store](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Store.htm)。

## 从 QVD 文件读取数据

可以通过以下方法读取或访问 QVD 文件：

* 加载 QVD 文件作为显式数据源。QVD 文件可由脚本中的 LOAD 语句引用，与任何其他类型的文本文件一样（csv、fix、dif、biff 等）。

  例如：

  * `LOAD  * from [lib://DataFiles/xyz.qvd];``LOAD Name, RegNo from [lib://DataFiles/xyz.qvd];``LOAD Name as a, RegNo as b from [lib://DataFiles/xyz.qvd];`

* 通过脚本访问 QVD 文件。许多脚本函数（都以 qvd 开头）都可用于检索一个 XML 文件的 QVD 标题中发现的数据的不同信息。

## QVD 格式

QVD 文件正好包含一个数据表，由三个部分组成：

* 页眉。

  信息注释如果使用 QlikView 生成 QVD 文件，则标题为描述表格字段、后续信息布局及其他元数据的格式完整的 XML 标题（UTF-8 字符集）。

* 字节填充格式符号表。

* 位填充格式实际表。