2011-10-11 4 views
2

다음 명령을 사용하여 mysql 명령을 사용하여 일련의 sql 파일을 가져옵니다.Ant는 파일 세트와 파일을 명령 입력으로 적용합니다.

<apply dir="${basedir}" executable="mysql" failonerror="true" parallel="true"> 
    <arg value="-u${db.main.user}" /> 
    <arg value="-p${db.main.password}" /> 
    <arg value="-P${db.main.port}" /> 
    <arg value="-h${db.main.host}" /> 
    <arg value="-D${db.main.database}" /> 
    <srcfile/> 

    <fileset dir="${db.main.path_to_dump}"> 
     <filename name="keyword_category_rel.sql"/> 
     <filename name="keyword_classification.sql"/> 
    </fileset> 
</apply> 

문제 MySQL의 명령은 명령 입력으로서 파일되지 파라미터를 execept이다. 그렇다면 파일 세트의 파일을 매개 변수가 아닌 입력으로 제공하는 방법이 있습니까?

또 다른 옵션은 파일에서 sql 코드를 허용하는 -e 인수를 사용하는 것이지만 파일 세트 목록 파일의 데이터를 속성으로 어떻게 읽을 수 있습니까?

답변

0

또 다른 사용자는 같은 이유로 약 Ant run command with pipes에 대해 질문했습니다. 어쩌면 거기에 해결책이 당신의 문제를 해결할 것입니다.

+0

내 문제는 내가 파일 세트를 사용한다는 것입니다. 문제는 내가 bash 실행을 사용할 수 없도록 srcfile 속성에 접근 할 수 없다는 것입니다. –

0

그렇게 Ant addon Flaka에 의해 제공에 대한 루프와 결합 된 간부 인 작업을 시도해보십시오

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka"> 

<!-- define your fileset --> 
<fileset dir="${db.main.path_to_dump}" id="foobar"> 
    <filename name="keyword_category_rel.sql"/> 
    <filename name="keyword_classification.sql"/> 
</fileset> 

<!-- call exec for every file in your fileset --> 
<fl:for var="file" in="split('${toString:foobar}', ';')"> 
    <exec executable="mysql" dir="${basedir}/${build}" input="#{file}"> 
    <arg value="-u${db.main.user}"/> 
    <arg value="-p${db.main.password}"/> 
    <arg value="-P${db.main.port}"/> 
    <arg value="-h${db.main.host}"/> 
    <arg value="-D${db.main.database}"/> 
    </exec> 
</fl:for> 

</project> 
4

는 입력 redirector을 사용할 수있는 apply 작업에서 각각 '반복자'파일의 내용을 전달합니다. 예를 들어

<apply executable="${mysql}" addsourcefile="false"> 
    <fileset dir="${sql.dir}" /> 
    <redirector> 
     <inputmapper type="glob" from="*" to="${sql.dir}/*" /> 
    </redirector> 
</apply> 

mysql는 호출의 입력 스트림으로서 sql.dir 아래에있는 각각의 파일을 처리한다. 모든 mysql 자격 증명 인수를 생략했습니다. 그들은 필요할 것입니다. 파일 세트 내에서 선택기의 파일을 선택하지 않으면

다음 fileset 그것이 말하는 문서에 그주의 - 당신의 예에서

당신이 파일 세트에 대한 두 filename 요소를 지정,하지만 둘은 와일드 카드 포함 파일은 FileSet의 일부로 간주되지 않습니다. 이로 인해 FileSet 은 <and> 선택기 컨테이너와 동일합니다.

따라서 예제 파일 세트는 실제로 과 일치합니다. 파일입니다.

이 경우 Ant sql task을 사용할 수도 있습니다.

관련 문제