Files
SIC/code/datalib/merge.sh
2023-02-28 09:33:09 +08:00

134 lines
5.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#/bin/bash
data_ADD="./fileinfo.1.db"
#总数据库名
data_NEW="./fileinfo.2.db"
#新数据库名
merge_LOG="./merge.log"
#合并日志
merge_LIST="./merge.list"
function set_env(){
if [ -f $merge_LOG ];
then
rm $merge_LOG
fi
if [ -f $merge_LIST ];
then
rm $merge_LIST
fi
}
#获取新数据库中镜像信息存入到总数据库中
function get_into_iso(){
data_isomd5=`sqlite3 $data_NEW "select product_md5 from product;"`
data_isoname=`sqlite3 $data_NEW "select product_name from product;"`
data_isoversion=`sqlite3 $data_NEW "select product_version from product;"`
data_isoissue=`sqlite3 $data_NEW "select product_issue from product;"`
data_isoid=$(expr `sqlite3 $data_ADD "select product_id from product order by product_id desc limit 1;"` + 1)
sqlite3 $data_ADD "insert into product values ($data_isoid,'$data_isoname','$data_isoversion','$data_isomd5','$data_isoissue');"
echo "镜像 name:$data_isoname version:$data_isoversion md5:$data_isomd5 issue:$data_isoissue id:$data_isoid" >> $merge_LOG
}
function get_into_pkg(){
for pkg_list in `sqlite3 $data_NEW "select * from pkg;"`
do
new_pkg_md5=`echo $pkg_list | awk -F "|" '{print $4}'`
pkg_md5=`sqlite3 $data_ADD "select pkg_md5 from pkg where pkg_md5 is '$new_pkg_md5';"`
if [ "$new_pkg_md5" != "$pkg_md5" ];
then
new_pkg_name=`echo $pkg_list | awk -F "|" '{print $2}'`
new_pkg_version=`echo $pkg_list | awk -F "|" '{print $3}'`
new_pkg_id=`echo $pkg_list | awk -F "|" '{print $1}'`
pkg_id=$(expr `sqlite3 $data_ADD "select pkg_id from pkg order by pkg_id desc limit 1;"` + 1)
sqlite3 $data_ADD "insert into pkg values ($pkg_id,'$new_pkg_name','$new_pkg_version','$new_pkg_md5');"
#更新product_and_pkg表
local data_papid=$(expr `sqlite3 $data_ADD "select pap_id from product_and_pkg order by pap_id desc limit 1;"` + 1)
sqlite3 $data_ADD "insert into product_and_pkg values ($data_papid,$data_isoid,$pkg_id);"
echo "安装包 name:$new_pkg_name version:$new_pkg_version md5:$new_pkg_md5 id:$pkg_id papid:$data_papid" >> $merge_LOG
echo "$new_pkg_id $pkg_id" >> $merge_LIST
#获取新数据库中文件信息,并输入到总数据库中
else
pkg_id=`sqlite3 $data_ADD "select pkg_id from pkg where pkg_md5 is '$pkg_md5';"`
iso_pkgid=`sqlite3 $data_ADD "select product_id from product_and_pkg where pkg_id = '$pkg_id' and product_id = '$data_isoid';"`
#判断是否有向product_and_pkg输入相同的信息
if [ "$data_isoid" == "$iso_pkgid" ];
then
echo "相同安装包id为$pkg_id" >> $merge_LOG
else
local data_papid=$(expr `sqlite3 $data_ADD "select pap_id from product_and_pkg order by pap_id desc limit 1;"` + 1)
sqlite3 $data_ADD "insert into product_and_pkg values ($data_papid,$data_isoid,$pkg_id);"
echo "更新product_and_pkg表 papid=$data_papid iso_id=$data_isoid pkg_id=$pkg_id" >> $merge_LOG
fi
fi
done
}
#获取新数据库中文件信息存入到总数据库中
function get_into_file(){
OLDIFS=$IFS
IFS=$'\n'
for file_pkg_list in `cat $merge_LIST`
do
pkg_list=`echo $file_pkg_list | awk '{print $1}'`
for file_id in $(sqlite3 $data_NEW "select file_id from file where pkg_id= '$pkg_list';")
do
data_fileid=$(expr `sqlite3 $data_ADD "select file_id from file order by file_id desc limit 1;"` + 1)
data_filename=`sqlite3 $data_NEW "select file_name from file where file_id=$file_id"`
data_pkgid=`echo $file_pkg_list | awk '{print $2}'`
data_filepath=`sqlite3 $data_NEW "select file_pathname from file where file_id=$file_id"`
data_filemd5=`sqlite3 $data_NEW "select file_md5 from file where file_id=$file_id"`
data_filetype=`sqlite3 $data_NEW "select file_type from file where file_id=$file_id"`
data_fileowner=`sqlite3 $data_NEW "select file_owner from file where file_id=$file_id"`
data_filegenus=`sqlite3 $data_NEW "select file_genus from file where file_id=$file_id"`
data_filepermis=`sqlite3 $data_NEW "select file_permis from file where file_id=$file_id"`
data_filesize=`sqlite3 $data_NEW "select file_size from file where file_id=$file_id"`
data_fileacl=`sqlite3 $data_NEW "select file_acl from file where file_id=$file_id"`
data_filecap=`sqlite3 $data_NEW "select file_capable from file where file_id=$file_id"`
data_filelevel=`sqlite3 $data_NEW "select file_level from file where file_id=$file_id"`
data_filemac=`sqlite3 $data_NEW "select file_mac from file where file_id=$file_id"`
sqlite3 $data_ADD "insert into file values ($data_fileid,\"$data_filename\",$data_pkgid,\"$data_filepath\",\"$data_filemd5\",\"$data_filetype\",\"$data_fileowner\",\"$data_filegenus\",$data_filepermis,$data_filesize,\"$data_fileacl\",\"$data_filecap\",\"$data_filelevel\",\"$data_filemac\");"
echo "文件 id:$data_fileid name:$data_filename pkgid:$data_pkgid newpkgid:$new_pkg_id path:$data_filepath md5:$data_filemd5 type:$data_filetype owner:$data_fileowner genus:$data_filegenus permis:$data_filepermis size:$data_filesize acl:$data_fileacl cap:$data_filecap level:$data_filelevel mac:$data_filemac" >> $merge_LOG
done
done
IFS=$OLDIFS
}
function main(){
set_env
#设置环境
get_into_iso
#获取新数据库中镜像信息,并输入到总数据库中
get_into_pkg
#获取新数据库中安装包信息,并输入到总数据库中
get_into_file
#获取新数据库中文件信息,并如输入到总数据库中
}
main