繁体   English   中英

使用导入工具或SSIS帮助将每行具有可变列的CSV文件导入SQL表

[英]Help Importing CSV file with Variable Columns per Row into SQL Table using Import tool or SSIS

我被一个超过100,000行的CSV文件所困,其中包含来自提供商的产品图片。 以下是问题的详细信息,非常感谢您提供一些有助于解决此问题的提示。 谢谢。

每个产品文件有1行,其后有4列。 ID,URL,HEIGHT,WIDTH示例:1,http://i.img.com,100,200

当产品具有多个图像时,问题就开始了。 而不是每个图像有1行,文件在同一行中有更多列。
例如:1,http://i.img.com,100,200,//i.img.com,20,100,//i.img.com,30,50

请注意,只有第一张图片具有“ http://”,其余图片以“ //”开头

没有告诉每个产品多少个图像,因此没有办法告诉每行多少列或最大列。

如何使用SSIS或sql导入向导导入此文件。

另外,我需要定期执行此操作。

谢谢您的帮助。

我认为您不能使用任何标准的SSIS任务或向导来执行此操作。 您将必须编写一些自定义代码来解析每一行。 您可以使用VB代码在SSIS中执行此操作,也可以将文件导入到暂存表中,该暂存表仅是一列以容纳每一行并在SQL中进行解析。 对于这种操作,SSIS可能会更快。

另一种可能性是使用正则表达式或“搜索并替换”命令对文件进行预处理。 尝试在图像列表周围用双引号引起来,那么您应该可以很好地导入整个文件,并且将引号部分放在单列中。 给定您可以搜索的“ http:\\”,捕获字符串的开头应该很容易。 确定最后引号的位置可能会更成问题。

第三种可能的解决方案是获取源来修复数据。 即使您无法在单独的行中获得图像(或在单独的行中获得另一个文件,这将是理想的选择),也许您也可以从源中获得双引号作为导出的一部分。 与使用搜索和替换方法相比,这可能更不容易出错。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM