データのインポートとエクスポート¶
Odooでは、レポートの実行やデータの修正のためにデータのエクスポートやインポートが必要になることがあります。このドキュメントではOdooへのデータのエクスポートとインポートについて説明します。
重要
ユーザが 'タイムアウト' エラーに遭遇したり、レコードのサイズが原因で処理されないことがあります。これは、サイズが大きいエクスポートや、インポートファイルが大きすぎる場合に発生します。レコードのサイズをめぐるこの制限を回避するには、エクスポートまたはインポートをより小さなロットで処理します。
Odooからデータをエクスポートする¶
データベースを操作する際、データを別ファイルへエクスポートする必要が生じることがあります。これは活動報告に役立ちますが、Odooには各アプリケーションに詳細なレポート機能が標準で備わっています。
Odooでは、任意のレコードの任意のフィールドから値をエクスポートできます。エクスポートするには、エクスポートが必要な項目のリストビュー (リスト) アイコンを有効にし、エクスポートするレコードを選択します。レコードを選択するには、対応するレコードの横にあるチェックボックスにチェックを入れます。最後に、 アクション ボタンをクリックし、 エクスポート を選択します。
エクスポート をクリックすると、エクスポートするデータに関するいくつかのオプションを含む データをエクスポート ポップオーバーウィンドウが表示されます:
データを更新したい(インポート可能な項目のエクスポート) オプションにチェックを入れると、システムはインポート可能なフィールドのみを表示します。これは、 :ref:`既存のレコードを更新する必要がある場合<essentials/update-data>`に便利です。これはフィルタのような役割を果たします。このチェックを外すと、インポート可能なフィールドだけでなくすべてのフィールドが表示されるため、フィールドの選択肢が増えます。
エクスポートの際、2つのフォーマットでエクスポートするオプションがあります:
.csv`と.xlsです。.csv`の場合、項目はカンマで区切られ、.xls`の場合、内容とフォーマットの両方を含むファイル内の全てのワークシートに関する情報が保持されます。エクスポート可能な項目です。 (サブフィールドを表示)`アイコンを使用すると、より多くのサブフィールドオプションが表示されます。 :guilabel:`検索`バーを使用して特定のフィールドを検索します。 :guilabel:`検索`オプションをより効率的に使用するには、すべての :icon:`fa-chevron-right :guilabel:`(サブフィールドを表示)`アイコンをクリックしてすべてのフィールドを表示します。
(フィールドを選択) アイコンボタンを使用して、エクスポート対象フィールド リストにフィールドを追加できます。
選択されたフィールドの左側にある (並べ替え)`アイコンを使用して、フィールドを上下に移動し、エクスポートされたファイルに表示される順序を変更できます。 :icon:`fa-sort :guilabel:`(並べ替え)`アイコンを使用してドラッグ&ドロップします。
(フィールドを削除) アイコンを使用してフィールドを削除します。 (フィールドを削除) アイコンをクリックしてフィールドを削除します。
定期レポートでは、エクスポートのプリセットを保存しておくと便利です。必要なフィールドをすべて選択し、テンプレートのドロップダウンメニューをクリックします。そこで 新規テンプレート をクリックし、エクスポートテンプレートに一意の名前を付けます。 :guilabel:`(フロッピーディスク)`アイコンをクリックして設定を保存します。次回、同じリストをエクスポートする際は、ドロップダウンメニューから以前に保存した該当テンプレートを選択します。
ちなみに
フィールドの外部識別子を知っておくと便利です。例えば、エクスポートユーザインターフェイスの 関連会社 は parent_id (外部識別子) と等しくなります。この場合、エクスポートされるデータは、修正されて再インポートされるべきものだけになるので便利です。
Odooにデータをインポートする¶
Odooへのデータのインポートは、実装中や、データを 一括して更新する 必要がある場合に非常に役立ちます。次のドキュメントでは、Odooデータベースへのデータのインポート方法について説明します。
警告
インポートは恒久的で、元に戻すことは**できません**。しかし、フィルタ (作成日`または`最終修正日) を使用することで、インポートによって変更または作成されたレコードを特定することができます。
ちなみに
開発者モード を有効にすると、左メニューに表示されるインポートの設定が変更されます。これにより メニューが表示されます。この詳細メニューには インポートの経過を追跡 と サブフィールドとのマッチングを許可する という2つのオプションがあります。
モデルが openchatter を使用している場合、インポートの経過を追跡 オプションは、インポート中にサブスクリプションを設定し、通知を送信しますが、インポートが遅くなります。
サブフィールドとのマッチングを許可する オプションが選択されている場合、インポート時にフィールド内の全てのサブフィールドが Odooフィールド の下でマッチングに使用されます。
はじめましょう¶
データはExcel (.xlsx) または CSV (.csv) 形式でOdooのビジネスオブジェクトにインポートすることができます。これには連絡先、プロダクト、銀行明細、仕訳、オーダが含まれます。
データをインポート/入力するオブジェクトのビューを開き、(アクション)`アイコンをクリックして、ドロップダウンメニューで :icon:`fa-upload:guilabel:`(レコードをインポート)`を選択します。
ページの中央にある 顧客用テンプレートをインポート をクリックして テンプレート をダウンロードし、会社独自のデータを入力します。このようなテンプレートは、データマッピングがすでに設定されているため、ワンクリックでインポートできます。
ダウンロードしたテンプレートまたは既存のファイルをアップロードするには、次の手順に従います:
データファイルをアップロード をクリックし、希望するファイルを選択します。
必要に応じて、フォーマティング オプションを調整します(CSVファイルのみ)。
ファイル列 内の全てのデータが、適切な Odooフィールド に正しくマッピングされ、エラーがないことを確認して下さい。
(オプション) データファイルをロード をクリックして、同じファイルを再読み込みするか、別のファイルをアップロードします。
テスト をクリックして、データが検証済であることを確認します。
インポート をクリックします。
注釈
独自形式のExcelファイル (.xlsまたは.xlsx) をインポートする際には、フォーマッティング オプションは表示されません。
テンプレートの適用¶
テンプレートのインポートは、インポートするごく一般的なデータ(連絡先、プロダクト、銀行明細など)のインポートツールに用意されています。(Microsoft Office, OpenOffice, Google Drive など)。
テンプレートをダウンロードしたら、以下の手順に従って下さい:
データ構成に最適な列の追加、削除、並べ替えを行います。
外部ID (ID)列を削除 しない ことを強くお勧めします。(理由は次のセクションをご覧下さい)
外部ID (ID)列のIDシーケンスをドラッグダウンすることで、全てのレコードに一意のIDを設定します。
注釈
新しい列が追加された場合、そのラベルがOdoo内のどのフィールドにも適合しない場合、Odooはその列を自動的にマッピングできないことがあります。しかし、インポートのテスト時に新しい列を手動でマッピングすることができます。ドロップダウンメニューから該当するフィールドを検索します。
その後、インポートファイルでこのフィールドのラベルを使用し、今後のインポートが成功するようにします。
ちなみに
サンプルインポートテンプレートが存在しない場合、インポートする適切な列名を見つけるもう一つの便利な方法は、インポートするフィールドを使用してサンプルファイルをエクスポートすることです。この方法により、列名を正確に取得できます。
他のアプリケーションからインポートする¶
外部ID (ID) は、明細項目の一意の識別子です。以前のソフトウェアの 外部ID (ID) を使用して、Odooへの移行を容易にすることができます。
IDの設定はインポート時に必須ではありませんが、多くの場合に役立ちます:
インポートを更新: 同じファイルを重複させずに複数回インポートします。
異なるレコード間の関係を再作成するには、元のアプリケーションの一意な識別子をOdooの 外部ID (ID) 列にマッピングする必要があります。
最初のレコードにリンクする別のレコードをインポートする場合、元の一意の識別子には XXX/ID (XXX/External ID) を使用します。このレコードは、名前を使用して検索することもできます。
警告
2つ(またはそれ以上) のレコードが同じ 外部ID を持つ場合、不整合が発生することに注意して下さい。
マップ列にフィールドがない¶
Odooはインポートされたファイルの最初の10行を基に、各列のフィールドタイプを発見すべく検索します。
例えば、数字だけを含む列がある場合、整数 型のフィールドだけがオプションとして表示されます。
ほとんどの場合、この動作は有益かもしれませんが、失敗する可能性もありますし、デフォルトで提案されていないフィールドに列がマッピングされる可能性もあります。
このような場合は 関連フィールドのフィールドを表示 (高度な)オプション をチェックして下さい。そうすると、各列用にフィールドの完全なリストが利用できます。
データインポートフォーマットを変更する¶
注釈
Odooは列が日付かどうかを自動的に検出し、最も一般的に使用される日付フォーマットのセットから日付フォーマットを推測しようとします。このプロセスは多くの日付フォーマットで機能しますが、認識できない日付フォーマットもあります。これは日月が逆転しているために混乱を引き起こす可能性があります。`01-03-2016`のような日付では、日付書式のどの部分が日で、どの部分が月かを推測するのは困難です。
CSV ファイルをインポートする際、Odooは フォーマティング オプションを提供します。
Odooがファイルから検出した日付フォーマットを確認するには、ファイルセレクタのオプションをクリックすると表示される 日付フォーマット をチェックして下さい。このフォーマットが正しくない場合は、ISO 8601 を使用してフォーマットを定義し、希望のフォーマットに変更して下さい。
重要
ISO 8601 は、日付と時刻に関連するデータの世界的な交換および連絡を対象とする国際規格です。たとえば、日付形式は YYYY-MM-DD とする必要があります。1981年7月24日の場合、1981-07-24 と記述する必要があります。
ちなみに
Excelファイル(.xls, .xlsx)をインポートする際は、日付セル を使用して日付を保存して下さい。これにより、Odooで日付がどのようにフォーマットされているかに関わらず、ローカルの日付フォーマットが維持されます。 CSV ファイルをインポートする場合、Odooの フォーマティング セクションでインポートする日付フォーマットの列を選択して下さい。
通貨記号付き番号をインポートする¶
Odooは負の符号を表す括弧付きの数値や、通貨記号付きの数値を完全にサポートしています。また、Odooはどの千進/十進区切り記号が使用されているかを自動的に検出します。Odooが知らない通貨記号が使用された場合、数値として認識されずインポートがクラッシュすることがあります。
注釈
CSV ファイルをインポートすると、左側の列に フォーマティング メニューが表示されます。これらのオプションで 千セパレータ を変更することができます。
サポートされる数字の例(数字として3万2千を使用):
32.000,00
32000,00
32,000.00
-32000.00
(32000.00)
$ 32.000,00
(32000.00 €)
上手くいかない例:
ABC 32.000,00
$ (32.000,00)
重要
数字を囲む () (括弧) は、数字が負であることを示します。Odooが負の通貨値として認識するには、括弧の中に通貨記号を入れる**必要があります**。
インポートプレビューテーブルが正しく表示されない¶
デフォルトでは、インポートプレビューではフィールドの区切り文字としてカンマ、テキストの区切り文字として引用符が設定されています。もし CSV ファイルにこれらの設定がない場合は フォーマティング オプション ( CSV ファイルを選択した後 インポート CSV ファイルバーの下に表示されます )。
重要
CSV ファイルの区切り文字にタブがある場合、Odooは区切り文字を検出しません。スプレッドシートアプリケーションでファイルフォーマットのオプションを変更する必要があります。次の CSV ファイル形式の変更 セクションを参照して下さい。
表計算アプリケーションでCSVファイル形式を変更¶
スプレッドシートアプリケーションで CSV ファイルを編集・保存する場合、セパレータとデリミタにはコンピュータの地域設定が適用されます。Odooでは OpenOffice または LibreOffice を使用することをお勧めします。どちらのアプリケーションでも3つのオプション全てを変更することができます( LibreOffice アプリケーションから )。
Microsoft Excelは保存時にエンコーディングを変更することができます()。
データベースIDと外部IDの違い¶
いくつかのフィールドは別のオブジェクトとの関係を定義します。例えば、連絡先の国は'国'オブジェクトのレコードへのリンクです。このようなフィールドをインポートする場合、Odooは異なるレコード間のリンクを再作成する必要があります。このようなフィールドをインポートするために、Odooは3つのメカニズムを提供しています。
重要
インポートされるフィールドごとに、1つのみ メカニズムが使用されなければいけません。
例えば、連絡先の国を参照するために、Odooはインポートする3つの異なるフィールドを提案します:
国: 国の名前またはコード。
国/データベースID: PostgreSQLのID列で定義された、レコードに固有のOdoo IDです。
国/外部ID: 他のアプリケーション(またはそれをインポートした
.XMLファイル)で参照されているこのレコードの ID。
例えばベルギーの場合、以下の3つの方法のいずれかを使って輸入して下さい:
Country:
Belgium国/データベースID:
21国/外部ID:
base.be
会社のニーズに応じて、関係あるレコードを参照するために、これら3つの方法のいずれかを使用します。必要に応じて、どちらか一方を使用する場合の例を示します:
国 を使用します。 CSV ファイルを手動で作成した場合、この方法が最も簡単です。
:guilabel:`国/データベースID`を使用する:これはほとんど使用すべきではありません。主な利点は不整合が発生しないことです(同じ名前のレコードが複数あるかもしれませんが、それらは常にユニークなデータベースIDを持っています)。
Use 国/外部ID: サードパーティのアプリケーションからデータをインポートする場合、外部ID を使用します。
外部ID を使用する場合は、インポートする各レコードの 外部ID を定義する 外部ID (ID)列を持つ CSV ファイルをインポートします。そして、フィールド/外部ID`のような列でそのレコードを参照することができます。次の2つの :abbr:`CSV (Comma-separated Values) ファイルはプロダクトとそのカテゴリの例です。
関連フィールドをインポートする¶
Odooオブジェクトは常に他の多くのオブジェクトと関連しています(例えばプロダクトはプロダクトカテゴリ、属性、仕入先などとリンクしています)。これらの関係をインポートするには、まず関連オブジェクトのレコードをリストメニューからインポートする必要があります。
この作業は、状況に応じて関連するレコードの名前または該当するIDを使用して行うことができます。2つのレコードの名前が同じ場合は、IDを使用するようにします。このような場合、列タイトルの最後に / ID を追加します(例:プロダクト属性の場合:プロダクト属性 / 属性 / ID)。
フィールドでの複数一致のオプション¶
例えば、子カテゴリ名が`販売可能`のプロダクトカテゴリが2つある場合(例:その他.プロダクト/販売可能`と`他プロダクト/販売可能)、検証は中断されますが、データをインポートすることはできます。しかし、データは全て プロダクトカテゴリ リストで最初に見つかった`販売可能`カテゴリ(その他プロダクト/販売可能)にリンクされるため、インポートしないことをお勧めします。Odooでは代わりに、重複する値の1つ、またはプロダクトカテゴリ階層を変更することを推奨しています。
しかし、プロダクトカテゴリの設定を変更したくない場合、Odooはこのフィールド、 'カテゴリ' に 外部ID を使用することをお勧めします。
多対多関係フィールドをインポートする¶
タグはコンマで区切り、スペースを空けてはいけません。例えば、ある顧客が 製造業 と 小売業者 の両方のタグにリンクされる必要がある場合 例えば、顧客が 製造業` と 小売業 の両方のタグにリンクする必要がある場合、'製造業.小売業' は CSV ファイルの同じ列にエンコードする必要があります。
1対多関係をインポートする¶
会社が複数のオーダ明細を持つ販売オーダをインポートしたい場合、各オーダ明細に対して特定の行を CSV ファイルに指定しておく 必要があります 。最初のオーダ明細は、オーダに関連する情報と同じ行にインポートされます。追加の明細は、オーダに関連するフィールドに情報を持たない追加行が必要です。
Example
会社は、デモデータに基づき、:abbr:`CSV (カンマ区切り値)`ファイルを使用して見積をインポートします:
会社は CSV ファイルを使用して購買オーダ(購買オーダ明細行を含む)をインポートします:
会社は CSV ファイルを使用して顧客とその連絡先をインポートします:
画像ファイルをインポート¶
アップロード済 CSV または Excel ファイルとともに画像ファイルをインポートするには、次の手順に従います。
データファイル内の該当する 画像 列に画像ファイル名を追加します。
データファイルをアップロード または、データファイルをロード をクリックして再読み込みします。
インポートするファイル セクションの下にある ファイルをアップロード をクリックします。
該当する画像ファイルを選択します。選択したファイルの数がボタンの隣に表示されます。
テスト をクリックして、全てのデータが検証済であることを確認します。
インポート をクリックします。インポート処理中、Odooはアップロードされた画像をインポートされたデータファイルに自動的にリンクするためにファイルチェックを実行します。一致しない場合は、データファイルは画像なしでインポートされます。
注釈
インポートするファイル`セクションは、プロダクトテンプレートにすべてのフィールドが入力された :guilabel:`画像 列がある場合に有効になります。
データファイル内の画像ファイル名は、アップロードされた画像ファイルに対応している必要があります。
大量の画像をインポートする場合は、システムに過負荷がかからないように、バッチあたりの最大サイズ(MB)を指定し、バッチごとの待機時間を設定します。これを行うには、開発者モードを有効化 し、:guilabel:インポートするファイル セクションの バッチあたりの最大サイズ および 各バッチ後の遅延 フィールド( インポートするファイル 内)を入力します。既定では、待機時間はOdooクラウド - 利用規定(AUP) <https://www.odoo.com/acceptable-use>`_.で定義されている RPC/API 呼び出し上限を満たすように設定されています。
レコードを複数回インポートする¶
インポートされたファイルに 外部ID または データベースID という列が含まれている場合、既にインポートされたレコードは作成されずに変更されます。これは非常に便利で、ユーザは同じ CSV ファイルを何度もインポートすることができます。
Odooは、それが新規かそうでないかによって、各レコードの新規作成または変更を行います。
この機能により、企業はOdooの インポート/エクスポートツール を使用して、スプレッドシートアプリケーションのレコードを一括修正することができます。
特定のフィールドに提供されていない値¶
CSVファイルでフィールドが指定されていない場合、Odooはその定義されていないすべてのフィールドにデフォルト値を割り当てます。しかし、CSVファイル内 でフィールドに『空の値』が設定されている場合、Odooはデフォルト値を割り当てるのではなく、そのフィールドに空の値を設定します。
SQLアプリケーションからOdooへの異なるテーブルのエクスポート/インポート¶
異なるテーブルからデータをインポートする必要がある場合、異なるテーブルに属するレコード間の関係を再作成する必要があります。例えば、会社と人がインポートされた場合、各人と所属会社の間のリンクを再作成する必要があります。
テーブル間の関係を管理するには、Odooの 外部ID 機能を使用します。レコードの`外部ID`は他のアプリケーションにおけるそのレコードの一意な識別子です。 外部ID は全てのオブジェクトの全てのレコードで一意でなければなりません。この 外部ID の前にアプリケーション名またはテーブル名を付けるとよいでしょう。( 'company_1', 'person_1' - '1' の代わりに)
例として、企業と人という2つのテーブルをインポートするSQLデータベースがあるとします。各人は1つの会社に所属しているため、人と所属会社の間のリンクを再作成する必要があります。
この例を、PostgreSQLデータベースのサンプル でテストして下さい。
まず、全ての会社とその 外部ID をエクスポートします。PSQL で次のコマンドを記述します:
> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;
このSQLコマンドは以下の CSV ファイルを作成します:
External ID,Name,Is a Company
company_1,Bigees,True
company_2,Organi,True
company_3,Boum,True
会社にリンクされている人物の CSV(Comma-separated Values ファイルを作成するには、PSQLで次の SQLコマンドを使用します:
> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV
これは次のような CSV ファイルを生成します:
External ID,Name,Is a Company,Related Company/External ID
person_1,Fabien,False,company_1
person_2,Laurence,False,company_1
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3
このファイルでは、FabienとLaurenceはBigees社(company_1)で働いており、EricはOrgani社で働いています。人と会社の関係は、会社の 外部ID を使って行われます。外部 ID は、テーブルの名前の前に付けて、人と会社の間のIDの不整合を回避します (person_1 と company_1 は、元のデータベースで同じ ID 1 を共有していました)。
作成された2つのファイルはそのままOdooにインポートすることができます。これら2つの CSV ファイルをインポートすると、4つの連絡先と3つの会社があります(最初の2つの連絡先は最初の会社にリンクされています)。まず会社をインポートし、次に人をインポートするようにして下さい。
Odoo内でデータを更新¶
外部 ID が一貫性を保っている限り、データインポートにより既存のデータを一括更新することができます。
データエクスポートを準備¶
インポート機能を使用してデータを更新するには、まず更新対象のデータ画面へ移動し、 (リスト) アイコンを選択してリストビューを表示します。リストの左端にあるチェックボックスで、更新対象の各レコードにチェックを入れます。次に アクション ボタンをクリックし、ドロップダウンメニューから エクスポート を選択します。
表示される データを表示される :guilabel:`データをエクスポート ポップアップウィンドウで、 データを更新したい (インポート可能な項目のエクスポート) とラベル付けされたチェックボックスにチェックを入れます。これにより、エクスポートに 外部ID が自動的に含まれます。さらに、 :guilabel:`エクスポート対象フィールド ` リストには、インポート可能なフィールド のみ が含まれます。
注釈
手動で追加しない限り、外部ID フィールドは エクスポート対象フィールド リストに表示され ません。しかし、エクスポートには含まれます。ただし、データを更新する(インポート可能な項目のエクスポート) チェックボックスが選択されている場合は、エクスポートに含まれます。
ポップアップウィンドウの オプション を使用してエクスポートに含めるフィールドを選択し、エクスポート をクリックします。
更新済データをインポート¶
エクスポート後、データファイルに必要な変更を加えます。ファイルが準備できたら、通常のデータインポートと同じ手順で、インポート することができます。
危険
データを更新する際には、外部ID が一貫性を保つことが極めて重要です。これがシステムがレコードを識別する方法であるためです。IDが変更されたり削除されたりすると、システムは既存のレコードを更新する代わりに、重複したレコードを追加してしまう可能性があります。