【发布时间】:2014-02-26 14:47:52
【问题描述】:
这是我的示例文件
#%cty_id1,#%ccy_id2,#%cty_src,#%cty_cd3,#%cty_nm4,#%cty_reg5,#%cty_natnl6,#%cty_bus7,#%cty_data8
690,ALL2,,AL,ALBALODMNIA,,,,
90,ALL2,,,AQ,AKNTARLDKCTICA,,,
161,IDR2,,AZ,AZLKFMERBALFKIJAN,,,,
252,LTL2,,BJ,BENLFMIN,,,,
206,CVE2,,BL,SAILFKNT BAFSDRTHLEMY,,,,
360,,,BW2,BOPSLFTSWLSOANA,,,,
问题在于#%cty_cd3 是一个仅长度为 2 个字母的standard column(NOT NULL),但在 sql server 中,记录转移到另一列,(由于 btw 中有一个额外的逗号)我如何验证 csv 文件,以确保
当有 2 个字符的词只需要在 4 列中?
大约有 10000 条记录?
定义的规则集!
Should have a standard set of delimiters for eachrow
if not
Check for NOT NULL values having Null values
If found Null
remove delimiter at the pointer
3个,,,不会被2个,,替换
#UPDATED:我能知道这是否可以使用脚本来完成吗?
更新了我只需要一个对像这样的记录进行操作的函数
90,ALL2,,,AQ,AKNTARLDKCTICA,,, 使用正则表达式或任何其他方法更正它们并放回源文件!
【问题讨论】:
-
这个 SO post 可能是你的起点
-
csv文件中多余的逗号是什么原因?为什么不能简单地将其从文件中删除?
-
@HåkonHægland..src 文件如上所示,手动删除没有帮助!因为大约有 10-15k 条记录;
-
好的,我明白了.. 但是使用 awk 删除它们应该很容易..
-
所以您想删除两个字符列之前的额外字段(这被视为第 4 列的标志)?那么如果两个字符列之前有 5 个字段,您要删除其中一个为空的字段吗?