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

帮助使用导入工具或SSIS将每行具有可变列的CSV文件导入SQL表,sql,csv,data-import,Sql,Csv,Data Import,我被一个超过100000行的CSV文件困住了,该文件包含来自提供商的产品图像。下面是这个问题的细节,我非常感谢一些帮助解决这个问题的技巧。谢谢 该文件每个产品有1行,下面有4列。 ID、URL、高度、宽度 例:1,,http://i.img.com,100200 当一个产品有多个图像时,问题就开始了。 该文件不是每个图像有一行,而是在同一行中有更多列。 例子: 1.http://i.img.com,100200,//i.img.com,20100,//i.img.com,30,50 请注意,只有

我被一个超过100000行的CSV文件困住了,该文件包含来自提供商的产品图像。下面是这个问题的细节,我非常感谢一些帮助解决这个问题的技巧。谢谢

该文件每个产品有1行,下面有4列。 ID、URL、高度、宽度 例:1,,http://i.img.com,100200

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

请注意,只有第一个映像具有“http://”,其余映像以“/”开头

无法确定每个产品有多少个图像,因此无法确定每行的总列数或最大列数

如何使用SSIS或sql导入向导导入此内容

我也需要定期这样做


谢谢您的帮助。

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

另一种可能是使用regex或search-and-replace命令对文件进行预处理。尝试在图像列表中使用双引号,然后您应该能够很好地导入整个文件,将引用的部分放入一列中。考虑到您可以搜索的“http:\”,捕获字符串的开头应该很容易。确定最终报价的去向可能是一个更大的问题

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


祝你好运

您是否尝试与提供商联系,看看他们是否能够以更有用的格式提供摘录?这看起来很像pivot表的输出——若他们可以提供输入而不是输出,那个么导入可能会更容易。谢谢Tom。我想这件事我得咬紧牙关了。