Совместимость с временными метками при выполнении дельта-импорта в solr

Я новичок в solr. Я успешно проиндексировал базу данных oracle 10g xe. Я пытаюсь выполнить дельта-импорт на том же самом. Дельта-запрос требует сравнения last_modified столбца таблицы с ${dih.last_index_time}. Однако в моем приложении у меня нет такого столбца. Кроме того, я не могу добавить этот столбец. Поэтому я использовал «scn_to_timestamp(ora_rowscn)», чтобы указать значение требуемых временных меток. Этот запрос возвращает значение типа timestamp в следующем формате 24-JUL-13 12.42.32.000000000 PM, а dih.last_index_time в формате 2013-07-24 12:18:03. Итак, я изменил формат dih.last_index_time на to_timestamp('${dih.last_index_time}', 'YYYY/MM/DD HH:MI:SS').

Моя конфигурация данных выглядит так:

<dataConfig>
<dataSource type="JdbcDataSource" driver="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@XXX.XXX.XX.XX:XXXX:xe" user="XXXXXXXX" password="XXXXXXX" /> 
<document name="product_info">
<entity name="PRODUCT" pk="PID" query="SELECT * FROM PRODUCT" deltaImportQuery="SELECT * FROM PRODUCT WHERE PID=${dih.delta.id}" deltaQuery="SELECT PID FROM PRODUCT WHERE scn_to_timestamp(ora_rowscn) > to_timestamp('${dih.last_index_time}', 'YYYY/MM/DD HH:MI:SS')">
  <field column="PID" name="id" /> 
  <field column="PNAME" name="itemName" /> 
  <field column="INITQTY" name="itemQuantity" />
  <field column="REMQTY" name="remQuantity" />
  <field column="PRICE" name="itemPrice" /> 
  <field column="SPECIFICATION" name="specifications" /> 
  <entity name="SUB_CATEGORY" query="SELECT * FROM SUB_CATEGORY WHERE SCID=${PRODUCT.SCID}">
    <field column="SUBCATNAME" name="brand" /> 
    <entity name="CATEGORY" query="SELECT CNAME FROM CATEGORY WHERE CID=${SUB_CATEGORY.CID}">
      <field column="CNAME" name="itemCategory" /> 
    </entity>
  </entity>
</entity>
</document>
</dataConfig>

Однако это не работает, и я получаю следующую ошибку:

Unable to execute query: SELECT * FROM PRODUCT WHERE PID= Processing Document # 1
Caused by: java.sql.SQLException: ORA-00936: missing expression

Пожалуйста, помогите мне!!!


person Archit Arora    schedule 24.07.2013    source источник


Ответы (1)


У меня была аналогичная проблема, и я добился большего успеха с *to_date*. Но, глядя на это снова, кажется, что, возможно, вам просто нужно указать свой дельта-идентификатор в delatImportQuery:

deltaImportQuery="SELECT * FROM PRODUCT WHERE PID='${dih.delta.id}'"

person Mike D    schedule 13.08.2013