【问题标题】:SSIS - Bulk Insert with Format File and Single QuotesSSIS - 带格式文件和单引号的批量插入
【发布时间】:2020-05-16 03:31:12
【问题描述】:

我使用的是 SQL Server 2014。

我收到了一个 csv 文件,它有 3 列(下面的 AddressLine 列)可能包含用单引号括起来的值....示例...

Name, Age,  AddressLine1              ,  AddressLine3  ,    AddressLine3,  Job
Paul, 31 ,  '59, Reed Close'          ,  Ashby         ,    Essex       ,  Carpenter   
Jane, 39 ,  Bond Street               ,  Rochford      ,    Kent        ,  Nurse
Mary, 31 ,  'Tomb Lodge, Reeve  Close',  Poole         ,    Essex       ,  Football Player
Ian , 31 ,  66 Puffin Road            ,  'Maine, Kent,',    'Kent, UK'  ,  Policeman   

我正在尝试使用格式文件执行 SQL Server 批量插入语句...

地址列加载失败 - 可能是我的格式文件中的错误。

<RECORD>
    <FIELD ID ="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="255" />
    <FIELD ID ="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="255" />
    <FIELD ID ="3" xsi:type="CharTerm" TERMINATOR="\',\'" MAX_LENGTH="100" />
    <FIELD ID ="4" xsi:type="CharTerm" TERMINATOR="\',\'" MAX_LENGTH="100" />
    <FIELD ID ="5" xsi:type="CharTerm" TERMINATOR="\',\'" MAX_LENGTH="50" />
    <FIELD ID ="6" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="15" />
  </RECORD>

有没有一种方法可以处理格式文件中数据中的可选单引号或其他方式?

【问题讨论】:

  • 您尝试过使用 SSIS 吗?
  • 我使用 SSIS 作为解决方案的一个组件。我现在尝试用双引号替换文件中的单引号(我已经在 SSIS 中完成了),现在将修改格式文件以用于那些现在用双引号包围的列以格式定义文件为... TERMINATOR "\",\""

标签: sql-server ssis bulkinsert


【解决方案1】:

问题实际上是你的 csv 文件有空格。

如果你像这样格式化你的 csv:

Name,Age,AddressLine1,AddressLine2,AddressLine3,Job
Paul,31,'59, Reed Close',Ashby,Essex,Carpenter   
Jane,39,Bond Street,Rochford,    Kent        ,  Nurse
Mary, 31 ,'Tomb Lodge, Reeve  Close',  Poole         ,    Essex       ,  Football Player
Ian , 31 ,  66 Puffin Road            ,'Maine, Kent,','Kent, UK',  Policeman  

然后你可以像这样使用文本限定符:

结果如下:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多