Azure Synapse SQL 池未使用 OPENROWSET 识别 csv header

标签 azure t-sql azure-synapse openrowset azure-synapse-analytics

我尝试从 Azure Synapse 无服务器 SQL 池读取 csv,但它无法正确读取 csv 的 header ,并且在以下尝试中都没有:

csv 是:

test_col1,test_col2
A,B

尝试 1:

SELECT TOP 100 *
FROM OPENROWSET(
    BULK 'https://xxxx.dfs.core.windows.net/xx/xx/Test.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0'
) AS [result]

它生成了一个表,该表错误地生成了 C1 和 C2 作为字段名称:

C1,C2
test_col1,test_col2
A,B

尝试 2:

SELECT TOP 100 *
FROM OPENROWSET(
    BULK 'https://xxxx.dfs.core.windows.net/xx/xx/Test.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0',
    FIRSTROW = 2,
    FIELDQUOTE = '"',
    FIELDTERMINATOR = ','
) AS [result]

它生成了一个表,该表错误地生成了 C1 和 C2 作为字段名称,并删除了包含实际标题的 csv 行:

C1,C2
A,B

尝试 3:

SELECT TOP 100 *
FROM OPENROWSET(
    BULK 'https://xxxx.dfs.core.windows.net/xx/xx/Test.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0',
    FIRSTROW = 2
) AS [result]

与尝试 2 的结果相同:

C1,C2
A,B

有什么建议吗?

最佳答案

您需要声明该文件有标题行:

SELECT TOP 100 *
FROM OPENROWSET(
    BULK 'https://xxxx.dfs.core.windows.net/xx/xx/Test.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0',
    HEADER_ROW = TRUE
) AS [result]

关于Azure Synapse SQL 池未使用 OPENROWSET 识别 csv header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76811946/

相关文章:

azure - 如何在 CosmosDB 上查询最近 30 天的数据?

sql - T-SQL : convert(datetime) to include/exclude certain hours

sql-server - 获取多行相当于两个字段的除法

azure - 如何使用 Bicep 按名称查找现有的 roleDefinition ID?

c# - Azure Function 输入和输出绑定(bind)对象在每个请求中共享或创建

sql - 使用 where 和 groupby 进行子选择 SQL 查询

azure - 发生传输级错误 - 指定的网络名称不再可用。 ( azure 突触)

Azure Synapse Polybase/外部表 - 仅返回最新文件

azure-synapse - WaitFor 延迟在 Azure SQL DW 中不起作用

c# - 使用内存流从 URL 读取 Excel