我遇到了包含超过100,000行的CSV文件,其中包含来自提供商的产品图片。以下是问题的详细信息,我真的很感激一些提示,以帮助解决这个问题。感谢。
文件每个产品有1行,以及以下4列。 ID,网址,高度,宽度 例如: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可能会更快。
另一种可能性是使用regex或search-and-replace命令预处理文件。尝试在图像列表周围获取双引号,然后您应该能够导入整个文件,引用的部分将进入单个列。根据您可以搜索的“http:\”,捕获字符串的开头应该很容易。确定最终报价的去向可能更有问题。
第三个可能的解决方案是让源来修复数据。即使您无法将图像分成不同的行(或具有单独行的其他文件,这也是理想的),也许您可以从源中添加双引号作为导出的一部分。与使用搜索和替换方法相比,这可能不太容易出错。
祝你好运!