
2)指定切割后的文件前缀名 data_
3)指定切割后的文件后缀名为数字 -d
4)指定切割后的文件后缀名数字的长度 -a 4,即位宽(10进制),这里长度可根据切割出来的文件有多少估算,到底拆分为几个文件,由总行数,和每个文件的行数决定,不用指定。
如果为-a 4文件的后缀数字从0000开始计算,依次为0001,0002,0003,0004
split -l 2 data.log -d -a 4 data_
将文件data.log进行拆分,每个文件2行,如果文件总共有7行,则分为data_0000,data_0001,data_0002,data_0003
linux有rz和sz命令,可以让我们在window和本地虚拟机之间传输文件,但是有个麻烦的事情就是不能传输大于4G的文件如果是传送到linux,可以使用FileZilla软件,那么从linux下拉到windows怎么解决呢,那就是使用split将文件拆分成小于4G的文件
上面讲解了拆分,下面讲讲合并tar包
linux 下,可以使用cli程序把csv文件导入到数据库。具体代码如下:
$ORACLE_HOME/bin/sqlplus -S username/password@instanceName > /dev/null 2>&1 <<!!#对sqlplus作一些设置,使之只输出我们需要的文本
set echo off
set pagesize 0
set verify off
set feedback off
set termout off
set linesize 3000
set trimspool on
#查询输出到临时文件
spool /tmp/some_tmp.csv
#select语句
select column1||','||column2||','||column3 ....
from some_table where condition
spool off
#这里可以添加多个查询,且每个查询可输出到不同的文件,如下面注释
#spool /tmp/some_tmp.csv
#select column1||','||column2||','||column3 ....
#from some_table where condition
#spool off
set markup HTML off
quit
!!
#计算记录总行数,如果是0则不发邮件
NUM=`cat /tmp/some_tmp.csv | wc -l`
if[ $NUM -gt 0 ]
then
#先写excel的每列的title
echo 'Title_Of_Column1, Title_Of_Column2, ....Title_Of_ColumnN' > /tmp/attachement.csv
#数据正文
cat /tmp/some_tmp.csv >> /tmp/attachement.csv
#发邮件
(
echo "From: user@somehost.com"
echo "To: user1@somehost.com"
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/mixed"
echo ' boundary="A_Boundary_Name_You_Can_Change_It"'
echo "Subject: Subject"
echo ""
echo ""
#附件分隔符,上面的boundary前面加--
echo "--A_Boundary_Name_You_Can_Change_It"
echo 'Content-Transfer-Encoding: x-uuencode'
echo 'Content-Type: text/csv'
echo ' name="attachement.csv"'
echo 'Content-Disposition: attachment'
echo ' filename="attachement.csv"'
echo ""
uuencode /tmp/attachement.csv attachement.csv
echo "--A_Boundary_Name_You_Can_Change_It"
#附件结束
) | mailx -t
fi
#删除临时文件
rm -f /tmp/*.csv
exit 0
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)