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

如何使用sqlcmd将CSV文件中的数据导入到SQL数据库表中

sqlcmd导入本地CSV到SQL Server指定表的实现方案

sqlcmd本身没有内置直接导入CSV的参数,通常搭配SQL原生的BULK INSERT语句或者bcp工具实现需求,两种常用方案如下:

方案1:直接用sqlcmd执行BULK INSERT语句

你可以直接把导入逻辑写在SQL语句里,通过sqlcmd的-Q参数执行,示例命令如下:

sqlcmd -S ipdb -U sa -P "passwordsa" -d dbname -Q "BULK INSERT 你的目标表名 FROM 'C:\本地路径\你的文件.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW = 2, CODEPAGE = '65001' )"

参数说明:

  • -S/-U/-P/-d参数和你导出时的用法完全一致,直接替换成你自己的数据库连接信息即可
  • FIELDTERMINATOR:CSV的字段分隔符,和你导出时用的逗号保持一致即可,用其他分隔符可以自行修改
  • ROWTERMINATOR:CSV的行分隔符,Windows生成的CSV如果导入报错可以改成'\r\n'
  • FIRSTROW:指定从CSV的第几行开始导入,如果CSV第一行是表头填2,没有表头填1
  • CODEPAGE:CSV文件的编码,UTF-8填65001,GBK填936

方案2:搭配bcp工具导入(更适合本地文件导远程库场景)

如果你的SQL Server是远程部署的,BULK INSERT要求CSV必须放在远程服务器可访问的路径,这时候可以用SQL Server自带的bcp工具,直接读取本地CSV导入到远程库,示例命令如下:

bcp 库名.dbo.你的目标表名 in "C:\本地路径\你的文件.csv" -S ipdb -U sa -P "passwordsa" -c -t, -r\n -F2

参数说明:

  • -c:指定用字符类型格式导入,适配绝大多数普通CSV场景,无需额外做类型映射
  • -t,:指定字段分隔符为逗号,可按需修改
  • -r\n:指定行分隔符为换行符,Windows CSV可改成-r\r\n
  • -F2:从第二行开始导入,没有表头可以改成-F1

注意:导入前建议先备份目标表数据,避免因字段类型不匹配、分隔符错误导致的脏数据问题。如果CSV有特殊字符、空值处理的需求,可以额外在WITH配置里添加相关参数适配。

内容的提问来源于stack exchange,提问作者Preman Terminal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:27:00