适用于: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
);
- 使用
FIELDTERMINATOR和ROWTERMINATOR定义文件的列和行分隔符。 这些选项可确保查询正确解释数据的结构。 - 如果文件包含不希望包含在结果中的标题行,请使用选项
FIRSTROW跳过它。 对于第一行包含列名而不是数据的文件,此选项特别有用。 - 最后,指定
CODEPAGE确保正确字符编码。 使用包含特殊字符或使用非标准编码的文件时,此选项非常重要,因为它保证数据的准确解释。
注释
此示例使用 没有数据源的相对路径,该路径在 通过 Lakehouse 的 SQL 分析终结点查询文件时有效。 在 Fabric 数据仓库中,必须:
- 使用文件的 绝对路径 ,或
- 在外部数据源中指定 根 URL ,并在语句中
OPENROWSET引用它。