我想在bash脚本中执行以下操作:
这是我的代码:
#!/bin/bash
INPath="/home/bono/RD/BV-OUT/"
while
read line
do
RD="$line"
RDFile="$INPath$RD"
echo -e $RDFile
###MYSQLs:
mysql -u root -D RD --local-infile << EOF
LOAD DATA LOCAL INFILE '$RDFile'
INTO TABLE bv_tmp_all FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n';
EOF
##### EOSQL
done < /home/bono/RD/BV-OUT/allto468
回显显示正确的路径和文件名,但是mysql总是说:
not found (Errcode: 2 - File or Directory not found)
我尝试了不同的方法来连接两个字符串,但是没有一个:(
以下代码可用于mysql(无连接),但这不是我所需要的:
#!/bin/bash
while
read line
do
RDFile="/home/bono/RD/BV-OUT/468-R11"
echo -e $RDFile
###MYSQLs:
mysql -u root -D RD --local-infile << EOF
LOAD DATA LOCAL INFILE '$RDFile'
INTO TABLE bv_tmp_all FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n';
EOF
##### EOSQL
done < /home/bono/RD/BV-OUT/allto468
串联有什么问题?
如果allto468
本身具有\ r \ n行尾,则$ line看起来像468-R11\r
,并且肯定找不到该文件。
解决方案
dos2unix
在allto468文件上运行以解决此问题,更改done
为
done < <(sed 's/\r$//' /home/bono/RD/BV-OUT/allto468)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句