- 论坛徽章:
- 1
|
本帖最后由 holetohole 于 2015-10-27 22:13 编辑
又来提问了。shell中通过mysql 的load命令或者mysqlimport都没有精确的对每行数据进行格式类型的检查(有set 命令,但是没办法返回错误的信息,包括返回错误的行,错误的字段)。
现在通过shell循环读取数据文件,之后按照分隔符,读取变量一行一行的检查,之后insert进入数据库,根据数据库的sql_mode决定这一行的处理结果。这样每次建立mysql连接,很浪费···
伪代码如下,文件名字filename
while read row
do
/**检测列数目***/
column=echo $row|awk -F '|' '{print NF}'
if [ column == 20 ];then
a1=echo $row|awk -F '|' '{print $1}'
a2=echo $row|awk -F '|' '{print $2}'
···
a20=echo $row|awk -F '|' '{print $20}'
/**格式check**/
..............................
/**格式check**/
/**插入数据**/
mysql -uroot -proot -e "insert into test values($a1,$a2,...,$a20)"
end if
done < filename
这里面每一行数据都要 mysql -u一下。这样肯定浪费资源。
有没有好的方法,先建立mysql连接,之后在这个连接里面进行文件的读取操作?
求各位指点! |
|