2014-10-09 63 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">