我需要将一些表从 MySQL 迁移到 mongoDB。在网上搜索后,对我来说,将 MySQL 导出到 CSV 并从 CSV 导入到 mongoDB 应该是最快和最简单的方法。
我正在使用该查询导出 MySQL:
select * into outfile '/tmp/feed.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ''
from feeds;
但是有一个问题。
如果 MySQL 字段是NULL
,则 MySQL 导出将\N
(或\\N
)写入 CSV 文件。通过导入该文件,mongoDB 导入\\N
as 字符串而不是NULL
值。
mongoDB 导入选项--ignoreBlanks
将不起作用,因为\\N
从 mongoDB 的角度来看,它不是“空白”。
所以我的问题:
1.) 我怎样才能避免导出NULL
为\\N
?
或者
2.)如何mongodbimport
读取/解释 \\N
为NULL
空值?
顺便说一句:不能对 CSV 进行后处理以搜索和替换\\N
关于 1.) 的可能答案可能是对 select 语句的修改:SELECT IFNULL( field1, "" )
但在这种情况下,我必须定义并检查每一列。如果在 select 语句中定义了所有列,则导出脚本不会那么灵活。
//编辑:在玩那个 import<->export 时我发现了另一个问题:日期字段,它也被解释为来自 mongoimport 的字符串