2017-08-10 1 views
1

私は現在、8.0.6/marklogic 8:スケジュールのXQuery抽出

クエリ私のファイルextract_data.xqyにMarklogicから抽出するために、XQueryクエリー(API経由で起動)を使用しています:

xdmp:save("toto.csv",let $nl := "
" 

return 
document { 

for $data in collection("http://book/polar") 
return ($data) 
}) 

APIの呼び出し:

$curl --anyauth --user ${MARKLOGIC_USERNAME}:${MARKLOGIC_PASSWORD} -X POST -i -d @extract_data.xqy \ 
       -H "Content-type: application/x-www-form-urlencoded" \ 
       -H "Accept: multipart/mixed; boundary=BOUNDARY" \ 
       $node:$port/v1/eval?database=$db_name 

それが正常に動作しますが、私はmarklogicで直接この抽出液をスケジュールしたいと思いますし、それが再場合は、タイムアウトを避けるために、バックグラウンドで実行していますクエストは実行に時間がかかりすぎる。

そこにはそのような機能がありますか?

よろしく、 ロメイン。

+1

CORBは、特にURIの数が非常に多くなる可能性がある場合に、CSV出力を生成するためには本当に優れています。これはリストを分割し、各URIを個別のモジュール実行として処理するため、タイムアウトについて心配する必要はありません.https://github.com/marklogic-community/corb2#sample-5---report-generates- a-single-file-with-processing-each-uri –

答えて

4

task schedulerを使用して、定期的なスクリプトの実行を設定できます。

タイムアウトは、私はあなたにもMLCPを見てみることをお勧めxdmp:set-request-time-limit

とスクリプトの中で調整することができます。

0

Madsの提案によると、CORBのようなツールは、MarkLogicからcsvデータを引き出すのに役立ちます。

Michaelが提案するスケジュールは、定期的なエクスポートをトリガーし、出力をディスクに保存するか、HTTP経由で別の場所にプッシュできます。私はそのケースで増分輸出を実行する方法を検討したいと思いますし、バッチ処理をすることもお勧めします。大規模なクラスタでは、コンテンツフォレストが添付されているフォレスト単位またはホスト単位のバッチにエクスポートをチャンクすることを提案します。スケジュールされたタスクでは、実行する必要のある特定のホストを対象とすることができます。

アドホックエクスポートを実行することもできます。特に、taskbotのようなツールを使用して作業をバッチアップする場合は、実行してください。また、それをOPTIONS-SYNC-UPDATEモードと組み合わせると、複数のバッチを1つの結果ファイルにマージしてから、同じスレッドで実行するよりもパフォーマンスを向上させることができます。マージ結果は無限に拡大することはありませんが、比較的小さなデータセット(おそらく数百万の小さなレコードしかない)があれば十分かもしれません。

HTH!

関連する問題