【问题标题】:Deal with commas in comma delimited file when importing flat file as a source to SQL Server in SSIS在 SSIS 中将平面文件作为源导入 SQL Server 时处理逗号分隔文件中的逗号
【发布时间】:2019-09-03 11:16:11
【问题描述】:

我有一个以逗号作为分隔符的平面文件。在一个地址栏中,我有 .我的问题是我的文件中的一个字段包含“,”(逗号),因此在创建文件时它会创建新列,因为该字段是“,”,逗号分隔在列上。有没有办法解决这个问题而不必删除我文件中的逗号(我已经尝试过并且有效)?

例子:

store_name , phone , email , street , city , state , zip_code
Santa , (831) 476-4322 , santacruz@bikes.shop1 , 3700, Portola Drive1 , Santa Cruz1 , CA1 , 950601
Baldwin1 Bikes , (516) 379-8883 , baldwin@bikes.shop1 , 4200 Chestnut Lane1 , Baldwin1 , NY1 , 114321
Rowlett Bikes1 , (972) 530-5545 , rowlett@bikes.shop1 , 8000 Fairway Avenue1 , Rowlett1 , TX1 , 750881

下划线字段主要是造成问题。

【问题讨论】:

  • 你的例子不清楚。您需要确保您导入的数据具有“文本限定符”。
  • 您的数据有不同数量的列。您的数据需要明确定义才能正确读取。如果您查看标题下的行,您有 8 列,而其他列则有 7 列。
  • 这就是为什么我要求数据要么用双引号括起来,要么它们使用竖线 (|) 或波浪号 (~) 分隔符
  • 您所拥有的是一些不良数据......第一行的街道地址中有一个逗号。多年来处理了许多街道地址,这并不常见,除非涉及辅助线路或不良数据。不幸的是,坏数据太常见了。处理它的最佳方法是按照@Adirmola 的建议,并使用文本限定符导出数据 - IE,引用文本 - 如果可以的话。如果你不能......你可以做的不是很多。
  • 逗号是最差的分隔符。如果可能,请使用不同的分隔符创建此文件。管道或标签是通常的选择。照原样,没有办法分辨什么是有效的逗号,什么不是,除非你总是假设只有最后一个字段有逗号。

标签: sql-server ssis-2012 msbi


【解决方案1】:

Datasource 导出数据时,您必须处理字符.。您可以在escapereplace 字符. 上加上一些不会在其他任何地方使用的字符。如果找不到这样的字符,则可以使用Pair Replacement(即将. 替换为!!)。您只需替换 , 内部值字段。完成平面文件的预处理后,您可以将文件导入为csv data。您只需要在导入之前对平面文件进行预处理。

【讨论】:

  • 字段中的逗号会误导我的 SSIS 包理解文件行的列比之前所说的多!如何解决这个问题?例如:Name,Amount,Address Me,50,000,My Home,India you,53,300,Your Home,这里只存在 3 列但 SSIS 假定所有用于分隔字段的逗号;实际上并非全部。Amount 列和地址列有额外的逗号.你能上传一个关于这个的视频吗?
猜你喜欢
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
相关资源
最近更新 更多