1

私は、非営利団体が既存のデータをデータベースに整理するのを支援しています。データには約200レコードが含まれています。彼らは簡単な単語文書を使用しています。データベースに入力できるように、生データを構造化する作業を開始しています。私はデータをTextpadにコピーしました、そしてそれはとてもうまくいきました。つまり、データは構造化されていますが、完全には一致していません。たとえば、一部の組織にはWebサイトがあり、一部にはないなどです。残りのデータを示す情報のサンプルを次に示します。

私はERDを作成しましたが、それはいくつかの改訂を経て、私のメンターから青信号を与えられました。この時点で、私はETL(抽出、変換、読み込み)プロセスにいます

  1. 残りの部分的に構造化されているが乱雑なデータをクリーンアップします。
  2. それをExcelで読み取り可能なドキュメント型に入れ、該当するテーブルに配置します
  3. データ入力SQLスクリプトを作成します。
  4. スクリプトを実行します。

私はすでに他のいくつかのデータでこれを行っており、それは完全に機能しました。

クリーンアップしてExcel(CSVまたはタブ区切り)に配置するのは、ガイダンスが必要な場所です。それとも、XMLに変換する方が良いですか?テキストファイルを手動で調べて、すべてのヘッダー(より適切な単語がないため)が次のように一致することを確認すると、次のようになります。

それを転送する方法はありますか?

私はこれを調査しましたが、良い情報が見つからなかったので驚きました。[更新]実際の用語であるETLプロセスを見つけました。再入力や切り取りと貼り付けを開始する必要がある場合は、お知らせください。

4

1 に答える 1

1

これらの2つの「レコード」は大幅に異なります。たとえば、一部の連絡先には複数の電話番号があり、他の連絡先には1つしかありません。さらに、連絡先の数は異なる場合があります。複数のテーブルを持つリレーショナルデータベーススキーマに適しているようです。ただし、データレイアウトに基づいて複数のリレーショナルテーブルにデータを入力するプロセスを自動化するのは困難です。どのくらいのデータを扱っていますか?それほど多くない場合は、この種の半手動で、Textpadドキュメントの一部をINSERTステートメントに再フォーマットし(多くの正規表現の検索と置換を使用)、クエリの実行に時間をかける方がよい場合があります。

本当に大量のデータの場合は、選択した言語で小さなプログラムを作成してファイルを解析し、適切な挿入ステートメントを含む出力ファイルを作成して、すべてのデータテーブルにデータを入力することをお勧めします。

堅牢なリレーショナルデータベースの場合、少なくとも次のテーブルを含むデータベーススキーマが必要です。

Categories (map category names to IDs)
Types (map Group Types to IDs)
Organizations (including category and group type ID, name, addr, objs, activities, meetings, website, email, and an organization ID)
Contacts (one to many referencing org ID, including contact name and a contact ID)
Phone (one to many referencing contact ID, including phone type and phone number)

タイプとカテゴリのテーブルがなくても問題は解決できますが、データの量と将来のクエリ方法によっては便利な場合があります(たとえば、ある時点で特定のカテゴリのすべての組織を検索したい場合など)。特定のグループタイプであり、少なくとも数千の組織が存在する場合、追加のテーブルは価値があることがわかります)。

連絡先/電話情報は非常に柔軟に見えるため、別々のテーブルに配置することをお勧めします。そうしないと、連絡先の最大数を確認するために、contactN / phoneN/phoneTypeNのメイン組織テーブルに列を含める必要があります。 / phone、そしてそれはまた、いくつの連絡先/電話の関連付けを行うことができるかについての制限を作成します。

また、他のフィールド(MEETINGS、EMAILなど)の複数のエントリを必要とするレコードがないことを確認することをお勧めします。それが可能である場合は、リレーショナルテーブルを追加するか、組織テーブルに可能な限り複数のフィールドを追加するかを再度選択する必要があります。

于 2012-06-07T20:11:44.567 に答える