SQL-Statement에서 사용하기 위해 bash 스크립트에서 문자열을 연결하는 방법은 무엇입니까?

보노

bash 스크립트에서 다음을 수행하고 싶습니다.

  1. 파일 이름이있는 파일에서 일부 파일 이름 읽기
  2. 가변 입력 경로 설정
  3. 연결 1. 및 2.
  4. sql-statement에서 3. 사용

여기 내 코드 :

 #!/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되며 해당 파일은 확실히 찾을 수 없습니다.

솔루션

  1. dos2unixallto468 파일에서 실행 하여 문제를 한 번 수정합니다.
  2. done라인을 다음으로 변경

    done < <(sed 's/\r$//' /home/bono/RD/BV-OUT/allto468)
    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관