在 Linux 中移动 csv 文件的换行问题
Line breaking issue to move csv file in Linux
[我已将 csv 文件移动到 Linux 二进制模式的系统中。一个字段的文件内容被吐成多行它的评论部分,我需要删除新行,保持相同的格式,请帮助 shell 命令或 perl 命令
这里是三个记录的例子,实际看起来像]
Original content of the file
[移到linux后,评论区被分成4行,我想保持评论区的格式不变,但不想换行符
"第一行
第二行
第三行
所有行格式不应更改”
]2
正如我在上面的评论中所说,规格尚不清楚,但我怀疑这就是您想要做的。这是一种使用 sqlldr
将数据加载到 Oracle 的方法,其中一个字段被双引号括起来并包含换行符,其中记录的末尾是一个组合回车 return/linefeed。例如,当数据来自另存为 .csv 的 Excel 电子表格,其中单元格包含换行符时,就会发生这种情况。
这是由 Excel 以 .csv 格式导出并在 gvim 中查看的数据文件,打开了显示控制字符的选项。您可以将换行符视为 '$'
字符,将回车 returns 视为 '^M'
字符:
100,test1,"1line1$
1line2$
1line3"^M$
200,test2,"2line1$
2line2$
2line3"^M$
像这样构造控制文件,使用 infile 选项行上的 "str"
子句来设置记录结束字符。它告诉 sqlldr 十六进制 0D(回车 return,或 ^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>
[我已将 csv 文件移动到 Linux 二进制模式的系统中。一个字段的文件内容被吐成多行它的评论部分,我需要删除新行,保持相同的格式,请帮助 shell 命令或 perl 命令
这里是三个记录的例子,实际看起来像] Original content of the file
[移到linux后,评论区被分成4行,我想保持评论区的格式不变,但不想换行符
"第一行
第二行
第三行 所有行格式不应更改” ]2
正如我在上面的评论中所说,规格尚不清楚,但我怀疑这就是您想要做的。这是一种使用 sqlldr
将数据加载到 Oracle 的方法,其中一个字段被双引号括起来并包含换行符,其中记录的末尾是一个组合回车 return/linefeed。例如,当数据来自另存为 .csv 的 Excel 电子表格,其中单元格包含换行符时,就会发生这种情况。
这是由 Excel 以 .csv 格式导出并在 gvim 中查看的数据文件,打开了显示控制字符的选项。您可以将换行符视为 '$'
字符,将回车 returns 视为 '^M'
字符:
100,test1,"1line1$
1line2$
1line3"^M$
200,test2,"2line1$
2line2$
2line3"^M$
像这样构造控制文件,使用 infile 选项行上的 "str"
子句来设置记录结束字符。它告诉 sqlldr 十六进制 0D(回车 return,或 ^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>