2014-10-02 80 views
0

我已經從約20 MDB文件使用做了dataimport以下設置:Solr的dataimport變化數據源動態

<?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> 

在每一個我喜歡從不同的數據源導入時間,我不得不改變數據源手動屬性的頁面和標題實體,然後執行數據導入而不乾淨。現在有600多個mdb文件,這不是一個明智的選擇。有沒有什麼辦法可以在配置中進行循環?換句話說:有一個主要的實體或mdb文件可以處理所有書名和類別,那麼每本書都有自己的mdb文件,其id爲245.mdb,因此我需要更改dataSource爲頁面和標題動態。

+0

在我看來,你應該有書,類別和頁表單的.mdb在那裏爲您的所有數據。爲每本書的頁面分開文件不會隨着您添加更多書籍而擴展。另外,您是否可以將所有這些數據移到Microsoft Access之外的其他位置? – orangepips 2014-10-03 17:01:40

+0

@orangepips我已經嘗試搜索將MS Access數據庫轉換爲MySQL的任何工具,但它是相同的想法,我必須手動操作600多個mdb文件!目前,如果我沒有直接的Solr解決方案,我打算製作一個自動完成此過程的PHP應用程序,但我需要知道如何通過HTTP進行非乾淨的數據導入。 – SaidbakR 2014-10-03 17:38:45

回答

1

您無法在循環中創建數據源,但我相信您可以在a parameter variable中傳遞數據源信息。因此,也許你可以在Solr之外循環你的集合,然後用正確的源作爲參數變量觸發DIH。

只要確保在同步模式下運行DIH避免不同的呼叫對方步進(我認爲的參數是同步模式