[我已经将csv文件以二进制模式移入Linux系统。 一个字段的文件内容被分成多行其注释部分,我需要删除新行,保持相同的格式,请帮助shell命令或perl命令
这里是三条logging的例子,实际看起来像] 文件的原始内容
[移入linux后,评论字段被分成4行,我想保持注释字段在相同的格式,但不想要新的行字符
“第一行
第二行
第三行所有行格式不应该改变“] 2
正如我在上面的评论中所说的,规格不明确,但我怀疑这是你正在做的。 以下是使用sqlldr
将数据加载到Oracle中的方法,其中字段被双引号括起来,并包含换行符,其中记录的结尾是组合回车/换行符。 当数据来自保存为.csv的Excel电子表格,例如单元格包含换行符时,可能会发生这种情况。
这里是由Excel导出的数据文件,以.csv格式显示,并在gvim中查看,并打开选项以显示控制字符。 您可以将换行符看作'$'
字符,并将回车看作'^M'
字符:
100,test1,"1line1$ 1line2$ 1line3"^M$ 200,test2,"2line1$ 2line2$ 2line3"^M$
使用infile选项行上的"str"
子句构造像这样的控制文件来设置记录字符的结尾。 它告诉sqlldr十六进制0D(回车,或^ M)是记录分隔符(这样它将忽略双引号内的换行符):
LOAD DATA infile "test.dat" "str x'0D'" TRUNCATE INTO TABLE test replace fields terminated by "," optionally enclosed by '"' ( cola char, colb char, colc char )
加载后,数据看起来像这样在注释字段中的换行符(我称之为colc)保留:
SQL> select * 2 from test; COLA COLB COLC -------------------- -------------------- -------------------- 100 test1 1line1 1line2 1line3 200 test2 2line1 2line2 2line3 SQL>