1.查看目录下面有多少文件数
ls -l |grep "^-"|wc -l
思路很明显了,ls后通过grep进行过滤判断是文件还是文件夹,
如果是判断文件夹,可以使用ls -l |grep "^d"|wc -l
2.copy命令连接数据库 并分批导入文件到数据库中
下面是我的示例代码,可以分批把数据导入到数据库中.同时捕获错误的信息与错误的记录.
date
totalcount=1315890897;
onetimecount=100000000;
for (( c=1100000001; c<$totalcount; c=c+$onetimecount))
do
date;
sdate=`date +%y%m%d%H%M%S`
echo "$c rows";
cat /CLQR/Factory/FlowTest/Cimation/outbound/201401/part-r-00000 | tail -n+$c | head -$onetimecount |/opt/vertica/bin/vsql -h yourhostname -d yourdbname -U accountname -w your!password -c "copy clqr_az.STG_INKJET_TEST_DATA201401 from local stdin direct no escape null as 'N' DELIMITER E' 02' REJECTED DATA '201401_excpata_$sdate.txt' exceptions '201401$sdate.err' ";
date;
done;
使用copy的时候,需要注意的两点是,如果你的列分隔符 有问题,譬如说有些列内部有列分隔符 本身,这样就会造成找到的列比表本身多,会有问题.
如果你的行分隔符有问题,默认是 ,就会找到的列比设计的列少,都会被拒绝载入的.
我们可以加上exception选项和rejected data选项捕获这些错误的信息与错误的数据,以方便查找原因.
我的项目中出现过类似的问题,我的解决方案是使用不可见字符譬如