我正在将一个数据库从sybase迁移到mysql。为此,我将表导出到.csv文件中,然后将它们加载到mysql的新表中。在mysql中,空值被转换为0,所以我需要编辑.csv文件来找到没有值的地方,并用空值替换它们。
已编辑:我正在windows中从sybase导出.csv文件,并在unix虚拟机中使用它们。
空值可能出现在中间的列中:3,,,4,5——这里应该是3,null,null,4,5。为了实现这一点,我成功地使用了:
sed -i -e 's/,,/,NULL,/g' file_name.csv
(运行两次)。
问题是当null值位于最后一列时:3,4,5,--这应该看起来像3,4,5,null
在文本编辑器中,我成功地使用了find and replace:find:,\r\n replace:,null\r\n
我想从unix终端实现自动化,但它不起作用。我试过:
sed -i -e 's/,\r\n/,NULL\r\n/' file_name.csv
sed -i -e 's/,\\r\\n/,NULL\\r\\n/' file_name.csv
谢谢您!
2条答案
按热度按时间ufj5ltwl1#
使用两次
或者一次
或者一次
这会将空行更改为
null
.cotxawn72#
既然有windows crlf结尾,就需要运行
dos2unix
在输入文件上。那么,你所需要的就是匹配
,
仅在行的末尾,并将其替换为,NULL
.以下是示例:
注:
-i
将改变file_out.csv
,$
匹配a,
在一行的末尾($
)自
sed
在线上运行,您不需要g
修饰符,因为每行上只有一个行尾。