如何解决mongoimport csv 并将数据字符串拆分为两列
我对 MongoDB 很陌生,我正在使用 mongoimport 将 CSV 数据导入数据库。我的 CSV 数据如下所示:
我希望 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 举报,一经查实,本站将立刻删除。