【问题标题】:Insert CSV file to already existing table within SQL Server将 CSV 文件插入到 SQL Server 中的现有表中
【发布时间】:2020-09-23 02:30:54
【问题描述】:

我有一个 .csv 文件,我必须将其更新到 SQL Server 中已有的表中。除了 BULK INSERT 之外,是否还有其他查询可供我使用?

这是数据库和表: 备份数据库 - dbo.Backup$ 表

这里是已经在 dbo.Backup$ 表中的示例数据

  Location  Name
  ga        John
  pa        Sally

这是 .csv 文件数据:(test1.csv)

  Location Name
  ca       Jan
  ky       Bill

期望的输出:

  Location  Name
  ga        John
  pa        Sally
  ca        Jan
  ky        Bill

.csv 文件具有相同的列。我只需要用新的 .csv 文件更新我现有的 dbo.Backup$ 表。我想我可以执行 BULK INSERT 命令来执行此操作,但是,列名也会继续导入。

这就是我正在做的:

BULK INSERT test
   FROM 'C:\Test\test1.csv'
WITH
   (
   rowterminator='\n',
   fieldterminator=','
   )

【问题讨论】:

  • 使用FIRSTROW = 2
  • 好的,谢谢,我认为这可行

标签: sql sql-server


【解决方案1】:

来自documentation

BULK INSERT 语句不支持跳过标题。

你可以做些什么来绕过这个:

  1. 创建一个结构相同的临时表,
  2. 批量插入临时表
  3. 删除临时表的第一行
  4. 从临时表中选择“真实”表。

或者,如果这是您需要定期执行的操作,请构建一个 SSIS 包以将 CSV 加载到表中。

【讨论】:

  • 我认为你可以做 FIRSTROW = 2
【解决方案2】:

你可以做OpenRowSet:

INSERT INTO dbo.Backup$
        
SELECT * from OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0; HDR=YES; 
Database=C:\User_Name\file_you_wish_to_insert.xlsx',[Sheet1$]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2014-01-24
    相关资源
    最近更新 更多