3

外部サイトからCKAN(バージョン1.8)にデータをインポートするためのカスタムハーベスターを構築しています。

それはかなりうまく機能し、それに関連するメタデータとリソースを作成します。このリソースを集約し、新しいCSVを作成して、インポートフェーズでの収集中にデータストアに保存したいと思います。

DataStore APIを使用できることはわかっていますが、HTTPを使用したくないです(APIキー/ユーザー/ URL / ...を追加する権限を持つハーベスタに与えることは意味がありません)

ハーベスタから直接DataStoreAPI関数を呼び出すことは可能ですか? https://github.com/okfn/ckan/blob/master/ckanext/datastore/logic/action.py

すべての関数は、文書化されていないコンテキストパラメータを取ります。

4

2 に答える 2

2

ここで行っていることはいくつかあります。

  • データストアに挿入するために CSV を適切な Python (または JSON) 構造に変換する
  • データストアへの挿入

後者の場合、次のいずれかを使用できます。

API はロジック アクションを呼び出すだけなので (さらに認証を行う)、これらはかなり似ていますが、既にコードを実行している場合は、ロジック アプローチの方が高速であり、より自然である可能性があります。つまり、定義された Web API の形でさまざまなコンポーネントに適切な境界があるため、API は概念的によりクリーンになる可能性があります。

前者 (つまり、CSV から JSON への変換) の場合は、データ コンバーター ライブラリ、特に必要な形式に正確に変換される commas.py 部分を使用することをお勧めします。データ コンバーターに基づいて開発されている完全な Web サービスがありますが、まだ完全には機能していません。

于 2013-02-06T12:40:53.343 に答える
0

ckanext-datastorer (データストア用) と ckanclient (ファイルのアップロード用) を使用してこれを解決しました。

ckanclient は、リダイレクトを正しく処理しないため、CKAN 1.8 でバグが発生しています。この流血と汚いパッチで解決しましたhttps://gist.github.com/mammadori/4945812

より良い修正は、urllib を完全に削除し、代わりにリクエストを使用するように ckanclient 全体を変更することです。

ご協力ありがとうございました

于 2013-02-13T16:48:50.907 に答える