微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mongoimport csv 并将数据字符串拆分为两列

如何解决mongoimport csv 并将数据字符串拆分为两列

我对 MongoDB 很陌生,我正在使用 mongoimport 将 CSV 数据导入数据库。我的 CSV 数据如下所示:

excel data example

我希望 MongoDB 集合中的数据为,

{ "_id" : BinData(0,"5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8"),"c" : 3303003 }
{ "_id" : BinData(0,"3D4F2BF07DC1BE38B20CD6E46949A1071F9D0E3D"),"c" : 2900049 }
{ "_id" : BinData(0,"7C222FB2927D828AF22F592134E8932480637C0D"),"c" : 2680521 }
{ "_id" : BinData(0,"6367C48DD193D56EA7B0BAAD25B19455E529F5EE"),"c" : 2670319 }
{ "_id" : BinData(0,"E38AD214943DAAD1D64C102FAEC29DE4AFE9DA3D"),"c" : 2310111 }

我已经尝试了下面的命令,但它导入不正确并且只将数据保留在一列中。

mongoimport --fields "_id.binary(base64),c.int32()" --db mgdb --collection sample --type csv --file C:\\Users\\Admin\\Downloads\\pwned-passwords-sha1-ordered-by-count-v7\\pwned-passwords-sha1-ordered-by-count-v7.csv

如果有人能引导我朝着正确的方向前进,那将是一个很大的帮助。提前致谢。

解决方法

在将 CSV 文件传递​​到 mongoimport 之前,您需要正确设置其格式。 mongoimport 只是尝试导入您提供的内容,因此您需要确保您提供的内容格式正确。

您目前所拥有的似乎是这种格式:

_id
5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8:3303003
3D4F2BF07DC1BE38B20CD6E46949A1071F9D0E3D:2900049

但你需要这种格式:

_id,c
5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8,3303003
3D4F2BF07DC1BE38B20CD6E46949A1071F9D0E3D,2900049

要在 CSV 上进行这样的转换,使用像 VSCode 这样的文本编辑器并进行搜索和替换会更容易。毕竟 CSV 只是一个文本文件。请注意,在 Excel 中进行搜索和替换可能不起作用,因为它会替换字段内的 :,而不是将其分成所需的新字段。 Excel 有时可能太聪明了。

您也可以通过下载 Cygwin 来使用像 sed 这样的命令行工具:

sed "s/:/,/g" file.csv > new_file.csv

但除非您已经熟悉 sed,否则文本编辑器可能是最简单的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。