【发布时间】:2013-08-22 22:38:52
【问题描述】:
我有一个包含Products 列表的 csv 文件,其中包含以下 4 个字段
Product ID, Name, Alias, UOM
我想将文件导入到有 2 个表的数据库中。第一个是Product 表:
Product ID, Name, UOM
第二个是Product Alias表:
Product ID, Alias
每个Product ID 可能有 0 到多个别名。
有什么方法可以让Alias 列与众不同,因为它在逗号之间有不同的分隔符,例如“;”或句号“。”将给定产品 ID 的 0 到多个别名分开?
因此,在 csv 导入期间,当它获得第三个逗号时,它会将该数据导入到第二个表中,但会导入一条新记录,其中包含重复的产品 ID,因为该逗号字段中有许多别名。
希望我解释得足够好,如果我没有解释清楚,请告诉我。无论正在使用什么代码,我对执行此操作的可能处理更感兴趣,但 python 将是首选路线。
示例数据
ProductID, Name, Alias, UOM
122, Widget1, W1; Wid1;Wt1, Each
123, Widget2, , Each
124, Widget3, W3; Wt3, Each
【问题讨论】:
-
附带说明,使用默认参数时,
csv.reader或DictReader将保留这些字段的前导空格 - 例如,第一行中的名称将是" Widget1",而不是 @ 987654333@。通常skipinitialspace=True可以解决这个问题……但如果您正在生成 CSV,最好以更类似于 Excel 的格式生成它,而不使用这些空格和/或使用引号,除非 CSV 文件是人类可读的很重要。