注:有用な詳細については、[背景]セクションまで下にスクロールします。次の図では、プロジェクトが Python-Django と South を使用しているとします。
次の CSV をインポートする最良の方法は何ですか?
"john","doe","savings","personal"
"john","doe","savings","business"
"john","doe","checking","personal"
"john","doe","checking","business"
"jemma","donut","checking","personal"
関連するテーブルPerson、Account、およびAccountTypeを含む PostgreSQL データベースに、以下を考慮します。
- 管理者ユーザーは、カスタム UI を介してリアルタイムでデータベース モデルと CSV インポート表現を変更できます
- 保存された CSV からデータベースへのテーブル/フィールドのマッピングは、通常のユーザーが CSV ファイルをインポートするときに使用されます
これまで2つのアプローチが検討されてきました
- ETL-API アプローチ: ETL API にスプレッドシート、CSV からデータベースへのテーブル/フィールドのマッピング、およびターゲット データベースへの接続情報を提供します。その後、API はスプレッドシートをロードし、ターゲット データベース テーブルに入力します。pygrametl を見ると、私が目指していることが可能だとは思えません。実際、これを行う ETL API があるかどうかはわかりません。
- 行レベル挿入アプローチ: CSV からデータベースへのテーブル/フィールド マッピングの解析、スプレッドシートの解析、および「結合順序」での SQL 挿入の生成。
2 番目のアプローチを実装しましたが、アルゴリズムの欠陥とコードの複雑さに苦労しています。私が望むことを行うPython ETL APIはありますか? それとも、車輪の再発明を伴わないアプローチですか?
バックグラウンド
私が働いている会社は、SharePoint でホストされている何百ものプロジェクト固有の設計スプレッドシートをデータベースに移行しようとしています。管理者が各プロジェクトのデータベースを定義/モデル化し、そこにスプレッドシートを保存し、ブラウズ エクスペリエンスを定義できるようにすることで、ニーズを満たす Web アプリケーションの完成に近づいています。完成のこの段階では、商用ツールへの移行はオプションではありません。Web アプリケーションは、DB モデリング UI、CSV インポート/エクスポート機能、カスタマイズ可能なブラウズ、およびプロジェクト固有のカスタマイズに対応するためのモジュール化されたコードを備えた、django-admin の代替手段と考えてください。
実装された CSV インポート インターフェイスは面倒でバグが多いため、フィードバックを得て別の方法を見つけようとしています。