繁体   English   中英

换行问题在Linux中移动CSV文件

[英]Line breaking issue to move csv file in Linux

[我已经以二进制模式将csv文件移动到Linux系统中。 一个字段的文件内容被分成多行,其注释部分,我需要删除新行,保持相同的格式,请在shell命令或perl命令上提供帮助

这是三个记录的示例,实际看起来像] 文件的原始内容

[进入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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM