2016-07-06 36 views
5

Używam MLCP (Marklogic Content Pump) do kopiowania zawartości z jednej bazy danych do drugiej. W ten używam -query_filter opcję, a jego wartość jest CTS: zapytanie w formacie XML serializowanym zestawu CTS: Element-rząd-maila owinięte w CTS-a zapytanie:Niepoprawny znak operatora Znak "<" (mniejszy niż) po podaniu jako -query_filter w MLCP

<cts:and-query xmlns:cts="http://marklogic.com/cts"> 
    <cts:element-range-query operator=">"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2000-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
    <cts:element-range-query operator="&lt;"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2016-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
</cts:and-query> 

teraz , powyższa kwerenda zwraca prawidłowy wynik, gdy wykonywane na ML Qconsole, ale po przekazaniu w opcji -query_filter MLCP, daje błąd mówiąc: "Nieprawidłowy znak wartości atrybutu" < ".

Wersja Marklogic i MLCP to 8,0-5.

Przy dalszym kopaniu w to zauważyłem, że problem jest tylko wtedy, gdy wartość operator mniej niż „<”

Uwaga: Mam skonfigurowany poprawny rząd-indeks w bazie danych dla elementu "zwolniony".

Odpowiedz

1

MarkLogic zachęca do korzystania z opcji plików przy użyciu kwerendy cts odcinkach jako XML, ponieważ znaki specjalne mogą być interpretowane przez bazowego OS w wierszu poleceń.

Moje pierwsze przypuszczenie byłoby spróbować tworzenia pliku, powiedzmy, options.txt z treścią:

--query_filter 
<cts:and-query xmlns:cts="http://marklogic.com/cts"> 
    <cts:element-range-query operator=">"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2000-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
    <cts:element-range-query operator="&lt;"> 
    <cts:element xmlns:c="http://iddn.icis.com/ns/core">c:released-on</cts:element> 
    <cts:value xsi:type="xs:dateTime" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">2016-12-21T00:00:00Z</cts:value> 
    </cts:element-range-query> 
</cts:and-query> 

(może trzeba będzie dokonać wszystkich XML pasowanie na tej samej linii tego pliku chociaż)

a następnie powołać MLCP z

mlcp.sh -options_file options.txt ...

+0

Dokładnie to, co teraz robię. Wszystkie te opcje są zawijane w pliku options.txt i uruchamiam tę samą komendę, o której mowa powyżej. –

+0

Rozumiem. Brzmi to dziwnie, ponieważ XML jest dobrze sformułowany, jak jest. Coś, co miałem na myśli, na wypadek, gdyby gdzieś pojawił się błąd, a "<" zostanie rozwiązany na "<" za wcześnie w fazie instalacji: czy próbowałeś "& lt;" zamiast "<"? –

+0

Próbowałem użyć '& lt;' również, ale dostał ten sam błąd –