0

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

使用数据配置从 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) Processing Document #1 at org.apache。 org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:253) 在 org.apache.solr.handler.dataimport.JdbcDataSource 的 solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72) .getData(JdbcDataSource.java:210) 在 org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39) 在 org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:58 ) 在 org.apache.solr 的 org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:71)。handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:237) at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:357) at 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) at 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 更多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 org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) 处的 .dataimport.DataImporter.runCmd(DataImporter.java:389) 原因:org.apache.solr 处的 java.lang.NullPointerException。 handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) ... 11 更多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 org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) 处的 .dataimport.DataImporter.runCmd(DataImporter.java:389) 原因:org.apache.solr 处的 java.lang.NullPointerException。 handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) ... 11 更多357) 在 org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:180) 在 org.apache.solr 的 org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:242) .handler.dataimport.DataImporter.doFullImport(DataImporter.java:331) 在 org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) 在 org.apache.solr.handler.dataimport.DataImporter$1。运行(DataImporter.java:370) 引起:org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) 的 java.lang.NullPointerException ... 11 更多357) 在 org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:180) 在 org.apache.solr 的 org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:242) .handler.dataimport.DataImporter.doFullImport(DataImporter.java:331) 在 org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) 在 org.apache.solr.handler.dataimport.DataImporter$1。运行(DataImporter.java:370) 引起:org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) 的 java.lang.NullPointerException ... 11 更多doFullImport(DataImporter.java:331) at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) ) 引起:org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) 的 java.lang.NullPointerException ... 11 更多doFullImport(DataImporter.java:331) at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389) at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370) ) 引起:org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.(JdbcDataSource.java:251) 的 java.lang.NullPointerException ... 11 更多

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

4

2 回答 2

0

Java 对

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

在跟踪的第二行。我猜你的意思是

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

Stack Overflow 的自动语法高亮在这里确实有帮助。

为了减少在编程语言中嵌入查询的愤怒:

  1. 在嵌入之前在解释器中尝试查询(如果 Sybase 有)
  2. 在支持该查询语言的语法突出显示的文本编辑器中写出查询
  3. 注意查询语言的转义字符(%hh 转义 URL 中的字符,\ 转义 SQL 中的字符)
  4. 使用您的语言支持的字符串格式和多行字符串功能

- 在职业生涯的前四个月里,他用 Python 和 PHP 做(除其他外)SQL 和 Solr 查询。

于 2011-11-10T09:56:54.557 回答
0

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

于 2012-02-17T18:37:28.793 回答