linux使用mongoimport导入事个文件夹下的数据

今天遇到一个需要批量导入csv文件的情况。

大致是这样的,一个文件夹下有一年的日志数据,该文件夹下又按12个月份创建12个文件夹,这个月份的文件夹下是每天的scv文件。

[mongo@master shells]$ cd /data/2015/
[mongo@master 2015]$ l
总用量 32
drwxrwxr-x. 2 mongo mongo 4096 1月  25 14:55 1
drwxrwxr-x. 2 mongo mongo 4096 1月  25 15:23 2
drwxrwxr-x. 2 mongo mongo 4096 1月  25 15:39 3
drwxrwxr-x. 2 mongo mongo 4096 1月  25 14:27 4
drwxrwxr-x. 2 mongo mongo 4096 1月  25 14:46 5
drwxrwxr-x. 2 mongo mongo 4096 1月  25 15:04 6
drwxrwxr-x. 2 mongo mongo 4096 1月  25 16:19 7
drwxrwxr-x. 2 mongo mongo 4096 1月  25 16:26 8

[mongo@master 1]$ pwd
/data/2015/1
[mongo@master 1]$ l
总用量 40546216
-rw-rw-r--. 1 mongo mongo    1610807 1月  25 13:42 10_bool.csv
-rw-rw-r--. 1 mongo mongo    3857068 1月  25 13:42 10_double.csv
-rw-rw-r--. 1 mongo mongo 1347192205 1月  25 13:44 10_float.csv
-rw-rw-r--. 1 mongo mongo    1656673 1月  25 13:44 11_bool.csv
-rw-rw-r--. 1 mongo mongo    4277151 1月  25 13:44 11_double.csv
-rw-rw-r--. 1 mongo mongo 1373628198 1月  25 13:45 11_float.csv
-rw-rw-r--. 1 mongo mongo    1691991 1月  25 13:45 12_bool.csv
-rw-rw-r--. 1 mongo mongo    4156328 1月  25 13:45 12_double.csv
-rw-rw-r--. 1 mongo mongo 1353254438 1月  25 13:47 12_float.csv
-rw-rw-r--. 1 mongo mongo    1649609 1月  25 13:47 13_bool.csv
-rw-rw-r--. 1 mongo mongo    4001216 1月  25 13:47 13_double.csv
-rw-rw-r--. 1 mongo mongo 1349098966 1月  25 13:48 13_float.csv
-rw-rw-r--. 1 mongo mongo    1711203 1月  25 13:48 14_bool.csv
-rw-rw-r--. 1 mongo mongo    3981629 1月  25 13:48 14_double.csv
-rw-rw-r--. 1 mongo mongo 1317977535 1月  25 13:49 14_float.csv

其中bool的文件数据导到boolLog集合中,float的文件数据导入到float表中。 

我的设想是循环读取文件夹下的文件,然后判断文件名中是否包含bool或float,如果double就不管理了。

shell脚本 分享如下:


#!/bin/bash

#获取根目录
root="/data/2015"


#循环读取文件
for dir in ${root}/*; do
   # 获取子目录
   tmp_dir=`basename $dir`
   #echo $tmp_dir


   #获取文件名
   for file in $dir/*; do

     temp_file=`basename $file`


     # 处理bool
     if [[ $temp_file =~ "bool" ]]
       then mongoimport -d logs -c boolLog --type csv --headerline --file ${file} -f id,time,value --ignoreBlanks


     # 处理float
     elif [[ $temp_file =~ "float" ]]
       then mongoimport -d logs -c floatLog --type csv --headerline --file ${file} -f id,time,value --ignoreBlanks
     fi
   done
done




你可能感兴趣的:(mongodb,csv批量导入)