2014-10-09 66 views
0

我嘗試以下SQL在dataimport配置文件的實體標籤:Solr的dataimport和SQL和XML逃生

<entity name="Page" dataSource="a1" query="SELECT &amp;apos;26484-&amp;apos;&amp;amp;`book`.id&amp;amp;&amp;apos;-&amp;apos;&amp;amp;`book`.page&amp;amp;&amp;apos;-&amp;apos;&amp;amp;`book`.part AS PageID, `book`.id AS pid, `book`.nass AS Content, `book`.part AS Part, `book`.page AS PageNum FROM `book` ORDER BY `book`.id, `book`.page"> 

SQL查詢中包含的字符應在XML被轉義' and &。不過,我recive在日誌中出現以下錯誤:

DocBuilder  Exception while processing: Page document : SolrInputDocument(fields: []):org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT '26484-'&`book`.id&'-'&`book`.page&'-'&`book`.part AS PageID,​ `book`.id AS pid,​ `book`.nass AS Content,​ `book`.part AS Part,​ `book`.page AS PageNum FROM `book` ORDER BY `book`.id,​ `book`.page Processing Document # 1 

DataImporter Full Import failed:java.lang.RuntimeException: java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT '26484-'&`book`.id&'-'&`book`.page&'-'&`book`.part AS PageID,​ `book`.id AS pid,​ `book`.nass AS Content,​ `book`.part AS Part,​ `book`.page AS PageNum FROM `book` ORDER BY `book`.id,​ `book`.page Processing Document # 1 

我用 JDBC驅動程序。

當我試圖從SQL查詢中刪除concatination所以,刪除轉義字符,我沒有得到這個錯誤,但我有solrWriter關於重複的唯一鍵的警告。我理解這個警告。然而,我怎麼能夠寫使用上面顯示的SQL查詢?

+1

有沒有必要逃避單引號,你可以把'''直接放到查詢中。 – cheffe 2014-10-09 07:31:49

+0

每個轉義字符都需要'&'。因此,您需要將'&'替換爲'& ''。 – cheffe 2014-10-09 07:33:32

回答

2
  1. 有沒有必要轉義單引號,你可以把'直接放入查詢。

  2. A &對每個轉義字符都是必需的。因此,您需要將&amp;apos;替換爲&amp;&apos;

破壞查詢的事實應該是(2)。

<entity name="Page" dataSource="a1" query="SELECT &amp;'26484-&amp;'&amp;&amp;`book`.id&amp;&amp;&amp;'-&amp;'&amp;&amp;`book`.page&amp;&amp;&amp;'-&amp;'&amp;&amp;`book`.part AS PageID, `book`.id AS pid, `book`.nass AS Content, `book`.part AS Part, `book`.page AS PageNum FROM `book` ORDER BY `book`.id, `book`.page">