Импорт данных Solr и SQL с выходом из xml

Я попробовал следующий SQL в теге сущности файла конфигурации импорта данных:

<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 &. Тем не менее, я получаю следующую ошибку в журнале:

 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 

Я использую ucanaccess jdbc-драйвер.

Когда я попытался удалить конкатенацию из SQL-запроса, удалив экранированные символы, я не получил эту ошибку, но получил предупреждение solrWriter о дублирующемся уникальном ключе. и я понимаю это предупреждение. Однако как я могу написать, используя запрос Sql, показанный выше?


person SaidbakR    schedule 09.10.2014    source источник
comment
Нет необходимости экранировать одинарные кавычки, вы можете поставить ' прямо в запрос.   -  person cheffe    schedule 09.10.2014
comment
И & требуется для каждого экранированного символа. Поэтому вам нужно будет заменить &amp;apos; на &amp;&apos;.   -  person cheffe    schedule 09.10.2014


Ответы (1)


  1. Нет необходимости экранировать одинарные кавычки, вы можете поставить ' прямо в запрос.

  2. & требуется для каждого экранированного символа. Поэтому вам нужно будет заменить &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">
person cheffe    schedule 09.10.2014