0

我被一个包含来自提供商的产品图像的超过 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 导入向导导入它。

我也需要定期这样做。

谢谢您的帮助。

4

1 回答 1

1

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

另一种可能性是使用正则表达式或搜索和替换命令预处理文件。尝试在图像列表周围加双引号,然后您应该能够很好地导入整个文件,带引号的部分进入单列。考虑到您可以搜索的“http:\”,捕获字符串的开头应该很容易。确定结束报价的去向可能是一个更大的问题。

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

祝你好运!

于 2011-09-21T15:05:49.280 回答