この質問には2つの側面があります。
データ移行
最初のステップは「RDBMSスキーマの定義」ですが、それをどこまで進めるのでしょうか。スプレッドシートは正規化されていないことで有名であるため、多くの重複があります。他の質問では、「データは大まかに構造化されており、明示的な制約はありません」と述べています。これを厳密に定義されたスキーマ(少なくとも3NF)に変換する場合は、クレンジングを行う必要があります。SQLはデータ操作に最適なツールです。
ワークシートごとに1つずつ、合計2つのステージングテーブルを作成することをお勧めします。スプレッドシートのデータを簡単にロードできるように、列をできるだけ緩く定義します(基本的には大きな文字列)。ステージングテーブルにデータをロードしたら、クエリを実行してデータ品質を評価できます。
- 重複する主キーはいくつありますか?
- いくつの異なるデータ形式?
- ルックアップコードは何ですか?
- 2番目のワークシートのすべての行の最初の行に親レコードがありますか?
- コード形式、データ型などはどの程度一貫していますか?
- 等々。
これらの調査により、実際のスキーマにデータを入力できるSQLを作成するための適切な基礎が得られます。
または、データが非常に絶望的であるため、2つのテーブルだけに固執することにした可能性があります。それはありそうもない結果だと思います(ほとんどのアプリケーションにはいくつかの基本的な構造があり、十分に深く掘り下げる必要があります)。
データの読み込み
最善の策は、スプレッドシートをCSV形式にエクスポートすることです。Excelには、これを行うためのウィザードがあります。(行うのではなくSave As...
)それを使用します。スプレッドシートにフリーテキストが含まれている可能性がある場合は、カンマを含む文が含まれる可能性があるため、次のような本当に安全な区切り文字を選択してください。^^~
ほとんどのRDBMSツールには、CSVファイルからデータをインポートする機能があります。PostgresqlとMysqlはNGOにとって明らかなオプションです(コストが考慮事項だと思います)が、SQL ServerとOracleの両方が無料(制限されている場合)のExpressエディションで提供されます。SQLServerは明らかにExcelとの最適な統合を備えています。Oracleには、外部テーブルと呼ばれる優れた機能があり、データがCSVファイルに保持されるテーブルを定義できるため、ステージングテーブルが不要になります。
考慮すべきもう1つのことは、GoogleAppEngineです。これはRDBMSではなくBigTableを使用しますが、大まかに構造化されたデータに適している可能性があります。代替ソリューションとしてGoogleドキュメントについて言及されたので、それをお勧めします。GAEは無料であり(多かれ少なかれ、使用量が非常に寛大なしきい値を超えると課金を開始します)、他のNGOとのアプリ共有の問題を解決するため、魅力的なオプションです。明らかに、あなたの組織はグーグルが彼らのデータをホストすることについていくつかの不満を持っているかもしれません。それは彼らがどの分野で活動しているか、そして情報の機密性に依存します。