2014-10-02 14 views
0

나는 를 사용하여 약 20 MDB 파일에서 dataimport에 대해 다음과 같은 설정을했을 :SOLR dataimport 변경 데이터 소스는 동적으로

나는 다른는 dataSource에서 가져 좋아마다에서
<?xml version="1.0" encoding="UTF-8" ?> 
<dataConfig> 
<dataSource name="a" driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://E:/feqh/main.mdb;memory=false" /> 

<dataSource name="a1" driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://E:/feqh/A/1.mdb;memory=false" /> 
<dataSource name="a2" driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://E:/feqh/A/2.mdb;memory=false" /> 
<dataSource name="a3" driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://E:/feqh/A/3.mdb;memory=false" /> 
<dataSource name="a4" driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://E:/feqh/A/4.mdb;memory=false" /> 
<!-- and so on --> 

<document> 
    <entity name="Book" dataSource="a" 
      query="select bkid AS id, bkid AS BookID,bk AS BookTitle, betaka AS BookInfo, cat as cat from 0bok"> 
        <field column="id" name="id"/> 
        <field column="BookID" name="BookID"/> 
        <field column="BookTitle" name="BookTitle"/> 
        <field column="cat" name="cat"/>  
     <entity name="Category" dataSource="a" 
       query="select name as CatName, catord as CatWeight, Lvl as CatLevel from 0cat where id = ${Book.CAT}"> 
        <field column="CatName" name="CatName"/> 
        <field column="CatWeight" name="CatWeight"/> 
        <field column="CatLevel" name="CatLevel"/> 
     </entity> 

     <entity name="Pages" dataSource="a5" onError="continue" 
       query="SELECT nass AS PageContent, page AS pageNum FROM b${Book.ID} ORDER BY page"> 
       <field column="PageContent" name="PageContent" /> 
       <field column="PageNum" name="PageNum" /> 
       <entity name="Titles" dataSource="a5" onError="continue" 
        query="SELECT * FROM t${Book.ID} WHERE id = ${Pages.PAGE} ORDER BY sub"> 
         <field column="ID" name="TitleID"/> 
         <field column="TIT" name="PageTitle"/> 
         <field column="SUB" name="TitleWeight"/> 
         <field column="LVL" name="TitleLevel"/> 
       </entity> 
     </entity> 


    </entity> 
    </document> 
</dataConfig> 

I 원본,가 수동으로 속성을 변경했다 페이지 및 제목 엔티티 모두를 처리 한 다음 정리없이 데이터 가져 오기를 수행하십시오. 이제 600 개가 넘는 mdb 파일로 현명한 선택이 아닙니다. 구성 내부에서 루핑 할 수있는 방법이 있습니까? 다른 말로하면 : 모든 책 제목과 범주를 처리하는 주체 또는 mdb 파일이 있고 모든 책의 ID가 245.mdb 인 ID가 245 인 책에 대한 자체 mdb 파일이 있기 때문에 dataSource를 변경해야합니다. 페이지와 제목을 동적으로.

+0

당신이 책, 카테고리와 페이지 테이블의 단일 .MDB을 가져야한다 나에게 보인다 (필자는 PARAM이 syncMode 생각) 서로 스테핑 서로 다른 통화를 피하기 위해 동기화 모드에서 다이 하이드로을 실행할 수 있도록 모든 데이터를 저장합니다. 각 도서의 페이지에 대해 별도의 파일을 보유하는 것은 도서를 추가함에 따라 확장되지 않습니다. 또한이 모든 데이터를 Microsoft Access가 아닌 다른 데이터로 이동할 수 있습니까? – orangepips

+0

@orangepips 필자는 이미 MS Access 데이터베이스를 MySQL로 변환하는 도구를 찾으려고했으나 같은 생각이었습니다. 필자는 수동으로 600MB 이상의 파일을 조작해야했습니다! 현재 Solr 솔루션이 없다면 PHP 프로세스를 자동화하는 PHP 애플리케이션을 만들 계획이지만 HTTP를 통해 비 클린 데이터 가져 오기를 만드는 방법을 알아야 할 것입니다. – SaidbakR

답변

1

루프에서 dataSources를 만들 수는 없지만 a parameter variable에 dataSource 정보를 전달할 수 있다고 생각합니다. 아마도 솔라 이외의 곳에서 콜렉션을 반복 할 수 있고 올바른 소스를 매개 변수 변수로 사용하여 DIH를 트리거 할 수 있습니다.

그냥