我尝试从 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/