首页 > 解决方案 > 在 Azure Synapse 中重命名文件列名

问题描述

我有一个命名约定很差的文件,我想在使用 in 之前清理一下Azure Synapse。是否可以重命名with块中的列?

SELECT TOP 10 *
FROM OPENROWSET(
    BULK 'path_to_file.csv'
    FORMAT = 'CSV'
    PARSER_VERSION = '2.0'
    FIRSTROW = 2)
    WITH (
        [ORDER ID] varchar(50)
    ) as rows

我可以在其中使用别名,select但希望在此之前对其进行清理。

SELECT [ORDER ID] as order_id

我可以把它包装在一个视图中——只是希望有一种方法可以更早地重命名。

标签: azureazure-synapse

解决方案


是的,可以在WITH块中重命名列;您在那里提供的名称将覆盖从文件中读取的列名(即使HEADER_ROW设置为TRUE.

不过有一个警告。您必须为所有列提供名称:

    SELECT TOP 10  *  
    FROM OPENROWSET
    (BULK 'path_to_file.csv',  
        FORMAT = 'CSV',
        PARSER_VERSION = '2.0',
        HEADER_ROW = true)
    WITH
    (   
        your_column_name_1 varchar(50)
        ...
        your_column_name_N varchar(50)
    ) 
    AS rows

...或选择您要保留和/或使用其序号重命名的那些:

    SELECT TOP 10  *  
    FROM OPENROWSET
    (BULK 'path_to_file.csv',  
        FORMAT = 'CSV',
        PARSER_VERSION = '2.0',
        HEADER_ROW = true)
    WITH
    (   
        your_column_name_1 varchar(50) 1
        your_column_name_4 varchar(50) 4
    ) 
    AS rows

推荐阅读