2012-02-01 4 views
2

특정 디렉토리에서 거부하는 모든 sql 파일을 실행하려고합니다. 내가 그 디렉토리에있는 3 개 SQL 파일이있는 경우mysql 명령 줄을 사용하여 (ant를 통해) 일련의 sql 파일을 실행하는 방법

<apply executable="mysql" dir="." failonerror="true"> 
     <arg value="--host=dbbackend"></arg> 
     <arg value="--user=stack"></arg> 
     <arg value="--password=overflow"></arg> 
     <arg value="mydbname"></arg> 
     <arg value="--e source dummy.sql"></arg> 
     <fileset dir="${db.dump.location.data}" casesensitive="no" description="take all sql files"> 
      <patternset> 
       <include name="**/*.sql" /> 
      </patternset> 
     </fileset> 
    </apply> 

, 다음 dummy.sql 3 회 호출됩니다

mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql' 

이는 다음과 같이 표현 될 수있다 : 내가 만들고 싶어 호출이 같은 것입니다 . 여태까지는 그런대로 잘됐다.

 <arg value="--e source dummy.sql"></arg> 

에 : 자리 표시가있는 경우

 <arg value="--e source ${unknown.placeholder.name}"></arg> 

, 다음 i는 "적용"태그의 "입력"속성을 사용하려면이 줄을 변경 사용할 수있는 자리가 있는가 (그리고 인수 "-e"를 제거하십시오).

가 "적용"요소에 사용할 수있는 "SRCFILE"태그입니다,하지만 난이 호출 할 수 없습니다 (작동하지 않습니다) :

 <arg value="--e source"></arg> 
     <srcfile/> 

당신이 기본 개미와 함께 작업을 수행하는 방법에 대한 제안 사항이 있습니까 선언? antcall + 파일 세트 (+ 자리 표시 자)를 사용하여 문제를 해결할 수 있습니까?

해결 방법은 파일 세트를 통해 반복하고 sql 파일에 대한 참조로 임시 SQL 파일을 만드는 것입니다. 마지막 단계로 "-e"를 통해 정적이라고 부릅니다. 하지만 그건 내가 (이 질문에 의해) 제거하려는 해결 방법입니다.

추신 : ant-contrib 기능을 사용하고 싶지 않습니다.

+0

답변이 없으므로 화제가 아닙니다. 당신은''를 쓸 수 있고,''을 사용할 필요는 없으며 그냥'/>'로 쓰면됩니다. 오 그래, ... 그리고 네가 네가 얻었을 경우에 대답을 받아 들여라. –

답변

0

ant sql task을 사용하지 않는 이유는 무엇을하고 싶은가요?

<apply ... parallel="false"> 
    <...> 
    <arg value="--e source" /> 
    <srcfile/> 
    <fileset ...></fileset> 
</apply> 

manual page of the apply task에 완전한 예제가있다 : 그렇지

, 당신은 srcfile 중첩 된 요소를 사용할 수 있습니다.

관련 문제