データのインポートとエクスポート¶
Odooでは、レポートの実行やデータの修正のためにデータのエクスポートやインポートが必要になることがあります。このドキュメントではOdooへのデータのエクスポートとインポートについて説明します。
重要
ユーザが 'タイムアウト' エラーに遭遇したり、レコードのサイズが原因で処理されないことがあります。これは、サイズが大きいエクスポートや、インポートファイルが大きすぎる場合に発生します。レコードのサイズをめぐるこの制限を回避するには、エクスポートまたはインポートをより小さなロットで処理します。
Odooからデータをエクスポートする¶
データベースを使用する際、データを別ファイルにエクスポートする必要がある場合があります。Odooは各アプリケーションで正確かつ簡単なレポートツールを提供しています。
Odooでは、任意のレコードの任意のフィールドから値をエクスポートすることができます。 エクスポートするには、エクスポートが必要なアイテムのリストビュー (リスト) を有効化し、エクスポートするレコードを選択します。 レコードを選択するには、該当するレコードの横にあるチェックボックスにチェックを入れます。 最後に、アクションをクリックし、エキスポート をクリックします。
エクスポート をクリックすると、データのエクスポート ポップオーバーウィンドウが表示され、エクスポートするデータのオプションが表示されます:
データを更新したい(インポート互換のエクスポート) オプションにチェックを入れると、システムはインポート可能なフィールドのみを表示します。これは、既存のレコードを更新する必要がある場合 に役立ちます。これはフィルタリングのように機能します。チェックボックスをオフにすると、インポート可能なフィールドだけでなく、全てのフィールドが表示されるため、より多くのフィールドオプションが表示されます。
エクスポートの際、2つのフォーマットでエクスポートするオプションがあります:
.csv`
と.xls
です。.csv`の場合、項目はカンマで区切られ、
.xls`の場合、内容とフォーマットの両方を含むファイル内の全てのワークシートに関する情報が保持されます。これらはエクスポートできる項目です。 >(右矢印) アイコンを使用すると、サブフィールドのオプションが表示されます。特定のフィールドを検索するには 検索 バーを使用します。 検索 オプションをより効率的に使用するには、 >(右矢印) を全てクリックして全てのフィールドを表示させて下さい。
+(プラス記号) アイコンボタンは、 エクスポートするフィールド リストにフィールドを追加するためにあります。
選択したフィールドの左にある ↕️ (上下の矢印) を使ってフィールドを上下に移動し、エクスポートされたファイルでの表示順を変更することができます。 ↕️ (上下の矢印) のアイコンを使ってドラッグ&ドロップします。
🗑️(ゴミ箱) アイコンはフィールドを削除するために使用します。フィールドを削除するには 🗑️ (ゴミ箱) アイコンをクリックして下さい。
繰返しレポートを作成する場合は、エクスポートプリセットを保存しておくと便利です。必要なフィールドを全て選択し、テンプレートのドロップダウンメニューをクリックします。そこで 新規テンプレート をクリックし、作成したエクスポートに一意の名前を付けます。 💾(フロッピードライブ) アイコンをクリックして設定を保存します。次に同じリストをエクスポートする必要がある場合は、ドロップダウンメニューから以前に保存した関連テンプレートを選択します。
ちなみに
フィールドの外部識別子を知っておくと便利です。例えば、エクスポートユーザインターフェイスの 関連会社 は parent_id (外部識別子) と等しくなります。この場合、エクスポートされるデータは、修正されて再インポートされるべきものだけになるので便利です。
Odooにデータをインポートする¶
Odooへのデータのインポートは、実装中や、データを 一括して更新する 必要がある場合に非常に役立ちます。次のドキュメントでは、Odooデータベースへのデータのインポート方法について説明します。
警告
インポートは恒久的で、元に戻すことは できません。しかし、フィルタ (作成日
または 最終修正日
) を使用することで、インポートによって変更または作成されたレコードを特定することができます。
ちなみに
開発者モード を有効にすると、左メニューに表示されるインポートの設定が変更されます。これにより メニューが表示されます。この詳細メニューには インポートの経過を追跡 と サブフィールドとのマッチングを許可する という2つのオプションがあります。
モデルが openchatter を使用している場合、インポートの経過を追跡 オプションは、インポート中にサブスクリプションを設定し、通知を送信しますが、インポートが遅くなります。
サブフィールドとのマッチングを許可する オプションが選択されている場合、インポート時にフィールド内の全てのサブフィールドが Odooフィールド の下でマッチングに使用されます。
はじめに¶
データはExcel (.xlsx
) または CSV (.csv
) 形式でOdooのビジネスオブジェクトにインポートすることができます。これには連絡先、プロダクト、銀行明細、仕訳、オーダが含まれます。
データをインポート/入力するオブジェクトのビューを開き、
をクリックします。レコードのインポート をクリックすると、Odooの別ページにテンプレートが表示されます。このようなテンプレートは、データマッピングが既に行われているため、ワンクリックでインポートすることができます。テンプレートをダウンロードするには、ページ中央の 顧客用にテンプレートをインポート をクリックして下さい。
重要
CSV ファイルをインポートする際、Odooは :guilabel:` フォーマッティング` オプションを提供します。これらのオプションは独自のExcelファイルタイプ(.xls
, .xlsx
)をインポートする際には表示され ません 。
*フォーマッティング*オプションに必要な調整を行い、 Odooフィールド と ファイル列 の全ての列にエラーがないことを確認します。最後に インポート をクリックしてデータをインポートします。
テンプレートの適用¶
テンプレートのインポートは、インポートするごく一般的なデータ(連絡先、プロダクト、銀行明細など)のインポートツールに用意されています。(Microsoft Office, OpenOffice, Google Drive など)。
テンプレートをダウンロードしたら、以下の手順に従って下さい:
データ構成に最適な列の追加、削除、並べ替えを行います。
外部ID (ID)列を削除 しない ことを強くお勧めします。(理由は次のセクションをご覧下さい)
外部ID (ID)列のIDシーケンスをドラッグダウンすることで、全てのレコードに一意のIDを設定します。
注釈
新しい列が追加された場合、そのラベルがOdoo内のどのフィールドにも適合しない場合、Odooはその列を自動的にマッピングできないことがあります。しかし、インポートのテスト時に新しい列を手動でマッピングすることができます。ドロップダウンメニューから該当するフィールドを検索します。
その後、インポートファイルでこのフィールドのラベルを使用し、今後のインポートが成功するようにします。
ちなみに
インポートする適切な列名を調べるもう1つの便利な方法は、インポートするフィールドを使用してサンプルファイルをエクスポートすることです。こうすることで、サンプルのインポートテンプレートがない場合でも、正確な名前が得られます。
他のアプリケーションからインポートする¶
外部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 ファイルを手動で作成した場合、この方法が最も簡単です。
国/データベースID を使用する: ほとんど使用されない方法です。最大の利点は、競合を起こさないという点で、主に開発者が使用します(同じ名前のレコードが複数あっても、常に固有のデータベースIDが付与されます)。
国/外部ID を使用: サードパーティのアプリケーションからデータをインポートする場合、外部ID を使用します。
外部ID を使用する場合は、インポートする各レコードの 外部ID を定義する 外部ID (ID)列を持つ CSV ファイルをインポートします。そして、フィールド/外部ID
のような列でそのレコードを参照することができます。次の2つの CSV ファイルはプロダクトとそのカテゴリの例です。
関連フィールドをインポートする¶
Odooオブジェクトは常に他の多くのオブジェクトと関連しています(例えばプロダクトはプロダクトカテゴリ、属性、仕入先などとリンクしています)。これらの関係をインポートするには、まず関連オブジェクトのレコードをリストメニューからインポートする必要があります。
この作業は、状況に応じて関連するレコードの名前または該当するIDを使用して行うことができます。2つのレコードの名前が同じ場合は、IDを使用するようにします。このような場合、列タイトルの最後に / ID
を追加します(例:プロダクト属性の場合:プロダクト属性 / 属性 / ID
)。
フィールドでの複数一致のオプション¶
例えば、子カテゴリ名が 販売可能
のプロダクトカテゴリが2つある場合(例:その他.プロダクト/販売可能
と 他プロダクト/販売可能
)、検証は中断されますが、データをインポートすることはできます。しかし、データは全て プロダクトカテゴリ リストで最初に見つかった`販売可能`カテゴリ (その他プロダクト/販売可能
) にリンクされるため、インポートしないことをお勧めします。Odooでは代わりに、重複する値の1つ、またはプロダクトカテゴリ階層を変更することを推奨しています。
しかし、プロダクトカテゴリの設定を変更したくない場合、Odooはこのフィールド、 'カテゴリ' に 外部ID を使用することをお勧めします。
多対多関係フィールドをインポートする¶
タグはコンマで区切り、スペースを空けてはいけません。例えば、ある顧客が 製造業
と 小売業者
の両方のタグにリンクされる必要がある場合 例えば、顧客が 製造業
と 小売業
の両方のタグにリンクする必要がある場合、'製造業.小売業' は CSV ファイルの同じ列にエンコードする必要があります。
1対多関係をインポートする¶
会社が複数のオーダ明細を持つ販売オーダをインポートしたい場合、各オーダ明細に対して特定の行を CSV ファイルに指定しておく 必要があります 。最初のオーダ明細は、オーダに関連する情報と同じ行にインポートされます。追加の明細は、オーダに関連するフィールドに情報を持たない追加行が必要です。
例えば、以下はデモデータに基づいてインポートできる見積書の CSV ファイルです:
次の CSV ファイルで、それぞれオーダ明細がある購買オーダをインポートする方法を示しています:
次の CSV ファイルは、顧客とそれぞれの連絡先をインポートする方法を示しています:
レコードを複数回インポートする¶
インポートされたファイルに 外部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 が自動的に含まれます。さらに、エキスポートするフィールド リストには、インポート可能なフィールド のみ が含まれます。
注釈
手動で追加しない限り、外部ID フィールドは エクスポートするフィールド リストに表示され ません。しかし、エクスポートには含まれます。ただし、データを更新する(インポート可能な項目のエクスポート) チェックボックスが選択されている場合は、エクスポートに含まれます。
ポップアップウィンドウの オプション を使用してエクスポートに含めるフィールドを選択し、エクスポート をクリックします。
更新済データをインポート¶
エクスポート後、データファイルに必要な変更を加えます。ファイルが準備できたら、通常のデータインポートと同じ手順で、インポート することができます。
危険
データを更新する際には、外部ID が一貫性を保つことが極めて重要です。これがシステムがレコードを識別する方法であるためです。IDが変更されたり削除されたりすると、システムは既存のレコードを更新する代わりに、重複したレコードを追加してしまう可能性があります。