知识库

基于 Jet 的数据源的数据和文件大小限制


发布时间: 11 Apr 2017
上次修改日期: 20 Jul 2023

问题

尝试连接到基于 Microsoft Jet 数据库引擎的数据源(例如 Excel、Access 或纯文本 (CSV) 文件)时,您可能会遇到与 Jet 数据库引擎中的限制相关的意外问题。 Microsoft Jet 技术在 8.2 之前针对 Excel 和 CSV 文件与 Tableau Desktop 结合使用,或者在使用 Tableau Desktop 8.2 及更高版本的旧版连接器选项时使用。

已知数据或文件大小限制

  • 使用大型 CSV 文件可能会出现问题。
    并没有明确或记录在案的文件大小限制,但作为一般准则,请使 CSV 文件的大小小于 4GB。即使您能够连接到大小超过 4GB 的 CSV 文件,但在执行数据提取时可能会导致错误,例如

    Query too complex(查询太复杂)

    此外,试图连接到大型 CSV 文件时,即使您的计算机具有足够的临时磁盘空间,也可能出现错误显示空间不足。

  • 表大小限制为 255 列(字段)。大多数情况下,Jet 在达到 255 列的限制时会失败。

  • 并集包含超过 255 个列(字段)。 如果并集包含超过 255 个列,则会发生以下错误:

    Database error 0x800004005: Too many fields defined(数据库错误 0x800004005:定义的字段太多)

    注意: 如果在自定义 SQL 查询中使用 UNION ALL 语句,则并集可能会包含超过 255 个列。如果使用 UNION ALL,则并集中的总列数等于每次使用 UNION ALL 语句时所计的列数。这可能会导致列数超过列限制。例如,假设您对 3 个表(每个表包含 102 个列)使用 UNION ALL。语句 SELECT * FROM "Table1" UNION ALL SELECT * FROM "Table2" UNION ALL SELECT * FROM “Table3” 将计算为 306 个列,因此超过了 Jet 列限制。

  • Access 数据源中的 Memo 字段可能在 255 个字符之后被截断。

  • 表和文件名称限制为 64 个字符。如果表或文件名称超过 64 个字符的限制,则在从 Tableau 中连接到数据源时,您可能会看到任何以下错误消息
    • An error occurred while communicating with data source <data-source-file-name>…(与数据源 <data-source-file-name> 通信时出现错误…),另外建议您检查权限。
    • <data-source-file-name> is not a valid file name….(<data-source-file-name> 不是有效的文件名…。)检查文件名中是否有标点符号或其他无效字符。
    • Unable to open the text file….(无法打开文本文件…。)检查文件类型和您的权限。
    • The table <table-name> does not exist.(表 <table-name> 不存在。)
  • 字段名称限制为 255 个字符。虽然 Jet 可读取名称更长的字段,但您对这些字段执行的许多操作可能会导致“未知”错误。当您创建数据提取时,此限制还会导致字段毫无征兆地消失。

环境

  • Tableau Desktop
  • Windows
  • Excel
  • Access
  • 文本文件 (CSV)

解决方案

解决方法

  • 如果遇到由列、表或文件名称超过限制字符数造成的问题,解决问题的最可靠方法是更改数据源级别的名称。
  • 如果您的数据源包含超过 255 个列,或者数据源文件大小异常大,在先将表分隔为较小部分(每个部分包含少于 255 个列)的情况下,您也许能够成功从 Tableau 中连接到数据源。然后,在 Tableau 中使用多个表和联接进行连接。要实现这点,您需要将一个字段用作联接的唯一密钥。例如,创建转换为字符串数据类型的行号字段。
注意: 即使借助此解决方案您可以连接到数据,但当您选择“查看数据”时,仍可能遇到以下错误:
数据库错误 0x800004005:定义的字段过多。
  • 如果连接到表之后性能很低,可能需要进行数据提取。
  • 如果出现错误,指出您的计算机没有足够的临时磁盘空间,即使确实没有足够临时磁盘空间,也要检查 Windows Temp 文件夹中是否有名称以 JET 开头的 .tmp 文件,并且文件大小是否为约 2GB。

原因

原因是 Jet 生成的临时文件的大小限制为 2GB。

其他信息


以下各项中可能会出现 Jet 限制:
  • Tableau Desktop 8.1 及更低版本中创建的工作簿
  • Excel 和文本文件数据源
  • Microsoft Access 数据源
  • 使用基于 Jet 的旧版本连接的工作簿(请参见下面的“重要注释”)
为了避免 Jet 数据库引擎限制,请考虑升级您的 Excel 或文本文件数据源。

注意: 导致“未知”错误的另一个原因是 Jet 驱动程序过时或损坏。

重要信息: 从 Tableau 2019.1 开始,您不再能创建新的旧版 Excel 或文本连接。在 2019 年 2 月之前,使用这些旧版连接创建的现有工作簿将继续工作,届时将会移除对旧版连接的所有支持。请参见 Tableau 社区中的旧版连接替代方案,了解使用旧版连接的替代方案。


此文章是否已解决问题?