查询带分隔符的文件

适用于:SQL 分析终结点和 Microsoft Fabric 中的数据仓库

本文介绍如何使用 Fabric SQL 查询 CSV 文件,包括 Fabric 数据仓库和 SQL 分析终结点。 CSV 是一种常用的灵活数据格式,但文件在结构上可能会有很大差异,这会影响查询方式。

本文中的示例演示如何查询常见特征不同的 CSV 文件,包括:

  • 包含或不带标题行的文件
  • 逗号分隔的值和制表符分隔的值
  • Windows (CRLF)和 Unix (LF)换行符
  • 带引号和非带引号的值,包括转义字符

以下各节介绍了每个变体,其中的实际示例演示了如何配置查询,以便在 Fabric 中使用 CSV 数据时正确解释文件格式并返回准确的结果。

使用 OPENROWSET 读取 CSV 文件

检查 CSV 文件内容的最简单方法是直接向 OPENROWSET 函数提供文件 URL。

如果文件可公开访问,或者Microsoft Entra ID 有权访问存储位置,则可以使用类似于以下示例的语句查询文件:

SELECT TOP 10 *
FROM OPENROWSET(
    BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.csv',
    HEADER_ROW = TRUE
);

使用 OPENROWSET 读取 TSV 文件

可以通过 OPENROWSET 读取制表符分隔值(TSV)文件,只需直接提供文件的 URL。

请确保 URL 指向正确的文件,以 .tsv 扩展名结尾,以清楚地指示格式:

SELECT TOP 10 *
FROM OPENROWSET(
    BULK '<subfolder>/<file name>.tsv'
);

注释

此示例使用 没有数据源的相对路径,该路径在 通过 Lakehouse 的 SQL 分析终结点查询文件时有效。 在 Fabric 数据仓库中,必须:

  • 使用文件的 绝对路径 ,或
  • 在外部数据源中指定 根 URL ,并在语句中 OPENROWSET 引用它。

如果文件扩展名不是 .tsv,则仍然可以通过替代默认分隔符,将其作为制表符分隔的文件读取。

使用FIELDTERMINATOR = '\t'选项在OPENROWSET语句中指定制表符作为列分隔符。

使用 OPENROWSET 读取带分隔符的文件

OPENROWSET 通过指定适当的分隔符和选项,可以读取通用分隔文件,例如 CSV、TSV 或其他基于文本的格式。

SELECT TOP 10 *
FROM OPENROWSET(
    BULK '<subfolder>/<file name>.txt',
    FORMAT = 'CSV',                -- Use CSV for delimited files
    FIELDTERMINATOR = ';',         -- Column delimiter
    ROWTERMINATOR = '\n',          -- Row delimiter
    FIELDQUOTE = '0x0A',           -- Optional: quote character
    FIRSTROW = 2,                  -- Skip header row
    CODEPAGE = '855'               -- Character encoding
);
  1. 使用 FIELDTERMINATORROWTERMINATOR 定义文件的列和行分隔符。 这些选项可确保查询正确解释数据的结构。
  2. 如果文件包含不希望包含在结果中的标题行,请使用选项 FIRSTROW 跳过它。 对于第一行包含列名而不是数据的文件,此选项特别有用。
  3. 最后,指定 CODEPAGE 确保正确字符编码。 使用包含特殊字符或使用非标准编码的文件时,此选项非常重要,因为它保证数据的准确解释。

注释

此示例使用 没有数据源的相对路径,该路径在 通过 Lakehouse 的 SQL 分析终结点查询文件时有效。 在 Fabric 数据仓库中,必须:

  • 使用文件的 绝对路径 ,或
  • 在外部数据源中指定 根 URL ,并在语句中 OPENROWSET 引用它。