2011-09-21 65 views
0

我被包含来自提供者的产品图像的超过100,000行的CSV文件卡住。以下是该问题的详细信息,我非常感谢一些帮助解决此问题的提示。谢谢。帮助使用导入工具或SSIS将包含每行可变列的CSV文件导入SQL表格

该文件有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导入向导导入此文件。

另外我需要定期做这个。

谢谢你的帮助。

+0

您是否尝试过联系供应商以了解他们是否可以以更有用的格式提供提取物?这看起来像数据透视表输出 - 如果他们可以提供输入,而不是输出,它可能更容易导入。 –

回答

1

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

另一种可能性是使用正则表达式或search-and-replace命令预处理文件。尝试在图像列表周围得到双引号,然后你应该可以导入整个文件,引用部分进入单个列。考虑到您可以搜索的“http:\”,捕捉字符串的开头应该很容易。确定结束报价的位置可能更成问题。

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

祝你好运!

+0

谢谢汤姆。我想我必须咬上这一颗子弹。 – user428384