You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQLCMD将CSV数据插入Azure SQL数据库?

仅用SQLCMD将CSV导入Azure SQL DB的实现方案

因为SQLCMD本身没有原生的批量CSV导入命令,但可以结合T-SQL和脚本生成的方式实现,以下是两种可行的方法:

方法一:生成INSERT语句批量执行(适合小数据量)

这种方式通过脚本把CSV每行转换成INSERT语句,再用SQLCMD执行生成的SQL脚本:

  1. 生成INSERT脚本
    用PowerShell处理CSV文件(假设CSV名为data.csv,目标表是dbo.ImportTable,列对应Col1,Col2,Col3):
Get-Content .\data.csv | Select-Object -Skip 1 | ForEach-Object {
    # 拆分CSV列,转义单引号,根据数据类型处理引号(数字类型不加包裹)
    $cols = $_ -split ',' | ForEach-Object {
        $val = $_ -replace "'", "''"
        if ($_ -match '^\d+$') { $val } else { "N'$val'" }
    }
    "INSERT INTO dbo.ImportTable (Col1, Col2, Col3) VALUES ($($cols -join ','));"
} | Out-File .\insert_data.sql -Encoding utf8

Select-Object -Skip 1用于跳过CSV的表头行,如果你的CSV没有表头可以去掉这部分。

  1. 用SQLCMD执行脚本
    运行以下命令连接Azure SQL DB并执行生成的INSERT脚本:
sqlcmd -S your_azure_sql_server.database.windows.net -d your_database_name -U your_username -P your_password -i .\insert_data.sql

方法二:结合OPENROWSET与外部数据源(适合大数据量)

这种方法需要把CSV上传到Azure Blob Storage,然后通过T-SQL的OPENROWSET读取数据,再用SQLCMD执行这些T-SQL语句:

  1. 准备工作
    把CSV文件上传到Azure Blob Storage的某个容器中,生成具有读取权限的SAS令牌(注意不要包含令牌开头的?)。

  2. 编写导入T-SQL脚本
    创建import_script.sql文件,内容如下:

-- 1. 创建数据库主密钥(如果尚未创建)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YourStrongPassword123!';
GO

-- 2. 创建数据库范围凭据,绑定Blob Storage的SAS令牌
CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your_sas_token_here';
GO

-- 3. 创建指向Blob存储的外部数据源
CREATE EXTERNAL DATA SOURCE AzureBlobStorage
WITH (
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://your_storage_account.blob.core.windows.net/your_container_name',
    CREDENTIAL = BlobStorageCredential
);
GO

-- 4. 从CSV导入数据到目标表
INSERT INTO dbo.ImportTable (Col1, Col2, Col3)
SELECT Col1, Col2, Col3
FROM OPENROWSET(
    BULK 'your_csv_file.csv',
    DATA_SOURCE = 'AzureBlobStorage',
    FORMAT = 'CSV',
    FIRSTROW = 2, -- 跳过表头行,无表头则改为1
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
) AS ImportData;
GO
  1. 用SQLCMD执行脚本
    运行以下命令:
sqlcmd -S your_azure_sql_server.database.windows.net -d your_database_name -U your_username -P your_password -i .\import_script.sql

注意:执行这些操作需要数据库用户拥有CREATE MASTER KEY、CREATE DATABASE SCOPED CREDENTIAL、CREATE EXTERNAL DATA SOURCE的权限;同时要确保Azure Blob Storage的防火墙规则允许Azure SQL DB访问(可设置为“允许Azure服务访问”或添加对应IP例外)。

内容的提问来源于stack exchange,提问作者Daniel Ortega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:16:14