SOLR & Sybase: ошибка полного импорта DIH - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь импортировать из БД, для подключения которой требуется драйвер Sybase.

Полный импорт из DIH с data-config:

<dataConfig>
    <dataSource type="JdbcDataSource"
        driver="sybase.jdbc4.sqlanywhere.IDriver"
               url="jdbc:sqlanywhere:eng=dbn;dbn=dbname;links=tcpip{host=10.94.XXX.XX}"
                user="usr" 
        password="pwd" />
    <document name="products">
      <entity name="company" pk="id" query="call WS.getFieldsLimited('RU', '2011-10-01', 10)">
            <field column="ID" name="crefo" />
...
...
        </entity>
    </document>
</dataConfig>

Сбой и выдает исключение

SEVERE: полный импорт не выполнен org.apache.solr.handler.dataimport.DataImportHandlerException: невозможно выполнить запрос: вызов WS.getCrefoSearchFieldsLimited ('RU', '2011-10-01', 10) Обработка документа № 1 в org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow (DataImportHandlerException.java:72) в org.apache.solr.handler.dataimport.JdbcDataSource $ ResultSetIterator. (JdbcDataSource.javag.ap.dataimport.Java: 58) в org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow (SqlEntityProcessor.java:71) в org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow (EntityProcessorWrapper.java:237) в org.apache.solr.handler.dataimport.DocBuilder.buildDocument (DocBuilder.java:357) в org.apache.solr.handler.dataimport.DocBuilder.java: DuD242) в org.apache.solr.handler.dataimport.DocBuilder.execute (DocBuilder.java:180) в org.apache.solr.handler.dataimport.DataImporter.doFullImport (DataImporter.java:331) в org.apache.solr.handler.dataimport.DataImporter.runCmd (DataImporter.java:389) в org.apache.solr.handler.dataimport.DataImporter $ 1.run (DataImporter.java:370) Вызывается: java.lang.NullPointerException в org.apache.solr.handler.dataimport.JdbcDataSource $ ResultSetIterator. (JdbcDataSource.java:251) ... еще 11

Используется ли неправильный URL-адрес или неверное объявление dataSource?Я могу получить доступ к этой процедуре через клиента sql.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

В настоящее время обработчик импорта данных не поддерживает вызовы хранимых процедур. Смотри https://issues.apache.org/jira/browse/SOLR-1262

0 голосов
/ 10 ноября 2011

Java писала о синтаксисе

(RU', '2011-10-01', 10)

во второй строке трассы. Я думаю, вы имеете в виду

 ('RU', '2011-10-01', 10)

Подсветка синтаксиса Stack Overflow здесь помогла.

Чтобы быть менее раздраженным встраиванием запросов в язык программирования:

  1. опробовать запрос в интерпретаторе (если он есть у Sybase) до встраивания
  2. записать запросы в текстовом редакторе, который поддерживает подсветку синтаксиса для этого языка запросов
  3. знать о escape-символах для вашего языка запросов (% hh экранирует символы в URL, \ экранирует символы в SQL)
  4. использовать форматирование строк и функции многострочных строк, поддерживаемые вашим языком

- Кто-то, кто провел первые четыре месяца своей карьеры, занимаясь (среди прочего) запросами SQL и Solr на Python и PHP.

...