Я пытаюсь импортировать данные из SqlServer в Solr 8.5.0. Полный импорт работает нормально. но импорт дельты не работает нормально. Когда я выполняю дельта-импорт, я получаю результат ниже.
Запросы: 3, Получено: 1, Пропущено: 0, Обработано: 0
почему данные не обрабатываются, даже если они получены?
Файл DataConfig выглядит следующим образом:
<dataConfig>
<!--<script><![CDATA[
id = 1;
function GenerateId(row) {
row.put('id', (id ++).toFixed());
return row;
}
]]></script> -->
<dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://172.29.58.139;databaseName=Legal1_TestNew" user="sa" password="Microsoft#1234"/>
<script><![CDATA[
function SplitDynamicColumn(row) {
var splitBy = '####'
var columns = row.keySet().toArray();
for (var c = 0; c < columns.length; c++) {
var columnName = columns[c];
var value = row.get(columnName);
/*if(columnName == 'doc_name_s'){
var docType = value.split('_')[0];
row.put('doc_type_s',docType);
}*/
if (value !== null) {
var arr = new java.util.ArrayList();
var sp = value.split(splitBy);
for (var i = 0; i < sp.length; i++) {
if(columnName!= null && columnName!= '' && (columnName.indexOf('_dt') != -1) && sp[i]!=null && sp[i]!='' ){
sp[i] = parseDateToISO(sp[i]);
}
arr.add(sp[i]);
}
row.put(columnName, arr);
}
row.put('copy_'+columnName, value);
}
return row;
}
function parseDateToISO (date){
var d = new Date(date),
month = '' + (d.getMonth() + 1),
day = '' + d.getDate(),
year = d.getFullYear();
if (month.length < 2)
month = '0' + month;
if (day.length < 2)
day = '0' + day;
return ([year, month, day].join('-'))+'T00:00:00Z';
}
]]></script>
<document>
<entity name="Contract"
pk="doc_name_s"
transformer="script:SplitDynamicColumn"
query ="select * from Cm_Solr_Temp_Final"
deletedPkQuery="SELECT doc_name_s FROM Cm_Solr_Temp_Final WHERE Active_s='0' AND CAST(Last_Updated_Date_s as datetime2(0)) >= CAST('${dih.last_index_time}' as datetime2(0))"
deltaQuery="SELECT doc_name_s FROM Cm_Solr_Temp_Final WHERE Active_s = '1' AND CAST(Last_Updated_Date_s as datetime2(0)) >= CAST('${dih.last_index_time}' as datetime2(0))"
deltaImportQuery="SELECT * FROM Cm_Solr_Temp_Final WHERE doc_name_s='${dih.delta.doc_name_s}'"
>
</entity>
<entity name="RealEstate"
transformer="script:SplitDynamicColumn"
query ="select * from re_temp_final">
</entity>
<entity name="IPR"
transformer="script:SplitDynamicColumn"
query ="select * from Ip_Solr_Temp_Final">
</entity>
<entity name="Litigation"
transformer="script:SplitDynamicColumn"
query ="select * from Lm_Solr_Temp_Final">
</entity>
<entity name="Regulatory"
transformer="script:SplitDynamicColumn"
query ="select * from Rg_Solr_Temp_Final">
</entity>
</document>
</dataConfig>
Прямо сейчас я импортирую только объект «Контракт». Я проверил журналы, и вот мой фактический deltaImportQuery, напечатанный в журналах
SELECT * FROM Cm_Solr_Temp_Final WHERE doc_name_s='[BTA_4054]'
после просмотра вышеуказанного запроса, я знаю, что реальная проблема связана с скобкой «[BTA_4054]» вокруг значения «BTA_4054». но я не мог понять, как применяется этот кронштейн. Я проверил базу данных, и значение в моей базе данных - «BTA_4054».
Кто угодно Пожалуйста, если можете.