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

时间:2021-03-29 05:21:28

标签: mongodb sha mongoimport

我对 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

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

1 个答案:

答案 0 :(得分:0)

在将 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,否则文本编辑器可能是最简单的。