简介
上篇文章介绍了
《将文本数据转为JSON格式导入MongoDB》。
链接:
https://blog.csdn.net/qq_43380180/article/details/109203607
本篇文章将介绍使用shell脚本将文件数据转为CSV
格式导入MongoDB。
流程图:
首行追加字段名
#首行追加字段名
sed -i '1i key1,key2,key3' cp_original.txt
-i
插入数据
1i
在首行插入数据
'1i key1,key2,key3'
等同于1i\key1,key2,key3
替换分隔符(文件)
sed -i "/s/!^/,/g" cp_original.txt
替换文件中的字符串,将
!^
替换为,
将csv数据导入MongoDB
#将csv数据导入MongoDB
mongoimport -d dbname -c ${txt_name} --headerline --file ${pwd_path}/csv_data.csv
--headline
将首行数据作为字段名
异常
有问题可参考上篇JSON数据入MongoDB的文章,https://blog.csdn.net/qq_43380180/article/details/109203607
有完整shell语法解释。
shell完整代码
#/bin/bash
txt_name = ${1%.*}
pwd_path = `pwd`
#复制源文件
`cp $1 cp_original.txt`
#首行追加字段名
sed -i '1i key1,key2,key3' cp_original.txt
#替换分隔符为逗号--1
:<<EOF
while read line;
do
str=${line//'!^'/','}
echo str
done < ${pwd_path}/cp_original.txt > ${pwd_path}/csv_data.csv
EOF
#替换分隔符--2
sed -i "/s/!^/,/g" cp_original.txt
`cp cp_original.txt md_process_folder/csv_data.csv`
#删除集合
mongo <<EOF
use dbname
db.[txt_name].drop()
<<EOF
#将csv数据导入MongoDB
mongoimport -d dbname -c ${txt_name} --headerline --file ${pwd_path}/csv_data.csv