在使用 Azure Synapse SQL 池的 OPENROWSET 函数时,如果无法识别 CSV 文件的标题,可以尝试使用以下解决方法:
REJECT_TYPE = VALUE,这样当遇到无法解析的值时会引发错误。CREATE EXTERNAL DATA SOURCE MyDataSource
WITH (
LOCATION = 'your_azure_blob_storage_path',
CREDENTIAL = MyCredential,
TYPE = HADOOP,
SERDE = 'org.apache.hadoop.hive.serde2.OpenCSVSerde',
REJECT_TYPE = VALUE,
REJECT_VALUE = 0
);
WITH 子句指定列名以及对应的数据类型。CREATE EXTERNAL TABLE MyTable
(
col1 INT,
col2 VARCHAR(50),
col3 DATE
)
WITH
(
LOCATION = 'your_azure_blob_storage_path',
DATA_SOURCE = MyDataSource,
FILE_FORMAT = MyFileFormat,
REJECT_TYPE = VALUE,
REJECT_VALUE = 0
);
BULK INSERT 语句代替 SELECT ... INTO 语句,以便更灵活地控制数据导入过程。BULK INSERT MyTable
FROM 'your_azure_blob_storage_path'
WITH
(
DATA_SOURCE = 'MyDataSource',
FORMAT = 'CSV',
REJECT_TYPE = VALUE,
REJECT_VALUE = 0
);
以上代码示例假设您已经创建了合适的外部数据源、外部表以及文件格式对象。请根据实际情况进行相应的调整。