【发布时间】:2013-10-02 20:12:19
【问题描述】:
我很难从 csv 文件中删除特殊字符。
我的输出表中有这样的过程我有一些这样的数据
Col1
BC,BS/APP
像这样,当我尝试使用 patindex 时,我有另外 10 列有可能获得特殊字符,我只能删除第一个特殊字符,而要删除其他字符,我需要使用 while 循环很难做到这一点。
所以我尝试在将数据 bcp 到 csv 文件后删除特殊字符,下面是我正在使用的 bcp 命令
bcp_with_error_check tempdb..STT_IM166_WEB_MWE out temp.dat -SSVR -UUSR -PPWD -c -b1000 -t'","'
sed -e 's/,"0/,="0/g;s/,"1/,="1/g;s/,"2/,="2/g;s/,"3/,="3/g;s/,"4/,="4/g;s/,"5/,="5/g;s/,"6/,="6/g;s/,"7/,="7/g;s/,"8/,="8/g;s/,"9/,="9/g'temp.dat > temp1.dat
sed -e 's/$/"/g' temp1.dat > temp2.dat
sed -e 's/^/="/g' temp3.dat >>Filename.csv
我的问题是因为它是 CSV 文件,如果我删除逗号 (,),考虑到它是特殊字符,它会干扰文件布局。
我可以在数据库中单独替换逗号,但我没有得到单独排除逗号并删除其他字符的命令。请帮帮我,我非常需要这个命令
【问题讨论】:
-
这部分删除了逗号?
-
您如何知道第一列何时包含逗号与第一个逗号何时标记第一个字段的结尾?你知道第二个字段总是数字吗?
-
这里我没有包含删除逗号@Beta的代码
-
不,我只是包含了一个列示例,col1 并不总是应该包含逗号或任何其他字符。如果它包含任何特殊字符如何处理它@jonathan leffler
-
如果要在逗号分隔的输出中自动修复“普通字段中的逗号”,则必须有一种方法来发现它们。你怎么知道你什么时候在一个字段的正文中有一个逗号而不是分隔两个字段?一定有什么东西可以告诉你……所以你也必须告诉计算机如何识别它。如果没有比我们更多地了解您的数据,实际上不可能提供更多帮助。这不是一个容易处理的问题。您是否检查过 BCP 手册以确保无法获得正确的 CSV 输出?
标签: unix sed awk special-characters bcp