SOLR& Sybase:DIH完全导入失败

时间:2011-11-09 23:25:05

标签: database solr dih

我尝试从需要Sybase驱动程序进行连接的数据库导入。

使用data-config从DIH完全导入:

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

失败并抛出一个例外

严重:完全导入失败 org.apache.solr.handler.dataimport.DataImportHandlerException:无法执行查询:调用WS.getCrefoSearchFieldsLimited('RU','2011-10-01',10)处理文档#1         at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72)         at org.apache.solr.handler.dataimport.JdbcDataSource $ ResultSetIterator。(JdbcDataSource.java:253)         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:210)         at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39)         在org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.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.doFullDump(DocBuilder.java:242)         在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         at org.apache.solr.handler.dataimport.JdbcDataSource $ ResultSetIterator。(JdbcDataSource.java:251)         ......还有11个

我是否使用了错误的网址或错误的dataSource声明? 我可以通过sql客户端访问该过程。

2 个答案:

答案 0 :(得分:0)

Java正在讨论

的语法
(RU', '2011-10-01', 10)

在追踪的第二行。我想你的意思是

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

Stack Overflow的自动语法突出显示在这里有所帮助。

在编程语言中嵌入查询时不那么恼怒:

  1. 在嵌入
  2. 之前在解释器中尝试查询(如果Sybase有一个)
  3. 在支持该查询语言的语法突出显示的文本编辑器中写出查询
  4. 了解查询语言的转义字符(%hh转义URL中的字符,SQL中的\ escapes字符)
  5. 使用您的语言支持的字符串格式和多行字符串功能
  6. - 在他的职业生涯的前四个月度过的一些人(其中包括)在Python和PHP中进行SQL和Solr查询。

答案 1 :(得分:0)

目前,数据导入处理程序不支持存储过程调用。见https://issues.apache.org/jira/browse/SOLR-1262