データベースからデータをインポートする

サマリー

データベースからOriginにデータをインポートする機能は2つあります。

  • クエリビルダ(32bit版Originのみ) -- SQLクエリを構築するグラフィックなダイアログ
  • SQLエディタ(32bitおよび64bit版Origin)-- SSQLクエリの直接書き込みと編集のエディタ。スキルのあるデータベースユーザに便利です。SQLスクリプトでLabTalk変数を定義することもできます。

どちらの機能でも、繰り返し使用のためにデータベース接続ODSファイルに保存でき、データベース接続とクエリODQファイルに保存できます。64bit版Originでのデータベースからのインポートの方が早いので、SQL言語に不慣れな場合はクエリービルダでODSおよびODQファイルを作成したのちに64bit版OriginのSQLエディタでODQをロードし、実際にインポートすることをお勧めします。


このチュートリアルでは、SQLエディタクエリービルダを使用してSQLサーバへの接続を構築する方法と、特定の表から希望のデータを抽出する方法を示します。ここで使用するSQLデータベースは AdventureWorks データベースです。AdventureWorks データベースの取り付け方法についての詳細情報は、CodePlex のWebサイトを参照してください。

このチュートリアルは、クエリービルダが32bit版Originのみサポートしておりますので、32bit版Originのみ対象です。

チュートリアルの各ステップはローカルなデータベースでの操作例です。このチュートリアルのまま操作することは出来ません。

学習する項目

このチュートリアルでは、以下の項目について解説します:

  • SQLエディタを使ってデータベースからデータをインポートする
  • クエリービルダを使ってデータベースからデータをインポートする
  • データを再インポートする
  • SQLエディタ内でのLabTalkサポート

ステップ

サーバマシンnoho上にSQLサーバAdventureWorks2008を予めセットアップ済であることを想定しています。

SQLエディタを使ってデータをインポートする

  1. 新しいプロジェクトを開始します。データベースアクセスツールバーのSQLエディタを開くボタンをクリックしてSQLエディタを起動します。
    ImportDataDatabase 1.png
    SQL editor preview.png
  2. AdventureWorks2008R2 データベースへの接続を作成します。Db editor connect.pngボタンをクリックするかファイル: 新規...メニューを選択してデータリンクプロパティダイアログを開きます。
  3. プロバイダータブでMicrosoft OLE DB Provider for SQL Serverを選択します。次へボタンをクリックします。
    SQL editor preview.png
  4. 接続タブで、サーバ名、ログインユーザ名、パスワード(必要な場合。このサンプルではlabtalk2015)、データベース名を含むサーバの情報を指定します。接続のテストをクリックして、接続可能かを確認します。
    SQL editor preview.png
  5. OK ボタンをクリックします。データベースAdventureWorks2008 内にある表が右側パネルにリストされます。Connection stringがメッセージタブにあります。
  6. SQL editor preview.png

    あるいは、すでに接続文字列がある場合、ファイル:接続文字列を編集... メニューを選択して、接続文字列エディタダイアログを開きます。次のSQL文字列を入力し、OKをクリックして接続を作成します。

    Provider=SQLOLEDB.1; Password=labtalk2015; Persist Security Info=TRUE; USER ID=CONNECT; Initial Catalog=AdventureWorks2008; DATA SOURCE=noho
    	
  7. ファイル:接続を保存を選択して、 MyDataSource.ods としてデータソースを保存します。
  8. ここで、9つの表からデータを抽出し、employee表を構成します。ゼロからSQLスクリプトを書くことができます。左パネルのノードをダブルクリックすると、テーブルとフィールド名をエディタに追加できます。ここでは、以下のSQL文を右パネルにコピーします。
    SELECT e.BusinessEntityID, p.Title, p.FirstName, p.MiddleName, p.LastName, p.Suffix, e.JobTitle, pp.PhoneNumber, pnt.Name AS PhoneNumberType, ea.EmailAddress, p.EmailPromotion, a.AddressLine1, a.AddressLine2, a.City, sp.Name AS StateProvinceName, a.PostalCode, cr.Name AS CountryRegionName, p.AdditionalContactInfo FROM HumanResources.Employee AS e INNER JOIN Person.Person AS p ON p.BusinessEntityID = e.BusinessEntityID INNER JOIN Person.BusinessEntityAddress AS bea ON bea.BusinessEntityID = e.BusinessEntityID INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID INNER JOIN Person.StateProvince AS sp ON sp.StateProvinceID = a.StateProvinceID INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = sp.CountryRegionCode LEFT OUTER JOIN Person.PersonPhone AS pp ON pp.BusinessEntityID = p.BusinessEntityID LEFT OUTER JOIN Person.PhoneNumberType AS pnt ON pp.PhoneNumberTypeID = pnt.PhoneNumberTypeID LEFT OUTER JOIN Person.EmailAddress AS ea ON p.BusinessEntityID = ea.BusinessEntityID
    	
  9. 結果のプレビューボタンSQL editor preview.pngをクリックしてデータをプレビューします。プレビューが良ければ、ワークシートにデータをインポートボタンButton db Import Data.pngをクリックし、データをインポートします。インポートすると、ワークシートはデータベースと接続され、左上に黄色のアイコンが表示されます。
    SQL editor preview.png
  10. メニューからファイル:接続とクエリーを新規に保存を選択して、この接続とクエリーをMyQuery.odqとして保存します。SQLエディタと閉じます。

32bit版Originでクエリービルダを使ってデータをインポートする

    32bit版のOriginを使用している場合、SQL文を視覚的に構築できるクエリービルダを使用できます。
  1. 新しいプロジェクトを開始します。データベースアクセスツールバーのクエリビルダボタンDb editor connect.pngをクリックします。
  2. クエリー:データソース:開くを選択してMyDataSource.ODSをロードします。右パネルに、データベースAdventureWorks2008の全てのテーブルが表示されます。
    SQL editor preview.png
  3. 次の9つのテーブルを右パネルから中央にあるメインパネルにドラッグアンドドロップします。
    HumanResources.Employee
    Person.Address
    Person.BusinessEntityAddress
    Person.CountryRegion
    Person.EmailAddress
    Person.Person
    Person.PersonPhone
    Person.PhoneNumberType
    Person.StateProvince
  4. HumanResources.Employee からメインキーBusinessEntityID をドラッグし、Person.BusinessEntityAddress にあるキーにドロップし、結合します。すると結合線によりこれらが結ばれます。
    SQL editor preview.png
  5. 対応する表から以下の列のチェックボックスを選択し、下部パネルに追加します。
    HumanResources.Employee
    • BusinessEntityID
    • JobTitle
    Person.Person
    • タイトル
    • FirstName
    • MiddleName
    • LastName
    • Suffix
    • EmailPromotion
    • AdditionalContactInfo
    Person.Address
    • AddressLine1
    • AddressLine2
    • City
    • PostalCode
    Person.StateProvince
    • Name
    Person.CountryRegion
    • Name
    Person.PersonPhone
    • PhoneNumber
    Person.PhoneNumberType
    • Name
    Person.EmailAddress
    • EmailAddress
  6. 下部パネルで、行の最初のセルをドラッグアンドドロップし、必要に応じて列の順番を変更します。例えば、JobTitleはSuffixの後に移動します。
    SQL editor preview.png
  7. 最初の行HumanResources.Employee.BusinessEntityID の Sort TypeドロップダウンリストからAscendingを選択し、全てのワークシートをこの列の昇順にソートします。
  8. Person.StateProvince.Name行で基準を ='Washington' とします。
    SQL editor preview.png
  9. 結果のプレビューボタンをクリックしてデータをプレビューします。プレビューが良ければ、ワークシートにデータをインポートボタンをクリックし、データをインポートします。インポートすると、ワークシートはデータベースと接続され、左上に黄色のアイコンが表示されます。
    SQL editor preview.png
  10. メニューからファイル:接続とクエリーの保存を選択し、ODQ ファイル MyQuery2.odq として接続とクエリを保存します。クエリービルダを閉じます。

データベースに再インポートする

データをデータベースからインポートするのにSQLエディタクエリービルダどちらを使用しても接続とクエリーは自動でワークシートに保存されます。データベースアクセスツールバーの、データのインポートボタンButton db Import Data.pngをクリックすれば、データベースからデータをいつでも再インポートできます。次のように操作してみましょう。

  1. データベース接続のワークシートでいくつかのデータを削除します。
  2. データのインポートボタンButton db Import Data.pngをクリックします。データが元に戻るはずです。
  3. データベースを新しいワークブックにインポートするには、メニューからファイル:データベースインポートを選択します。保存されたODQファイルのリストが表示されます。
  4. MyQuery.ODQを選択します。データベースからのデータが入力された、新しいワークブックが作成されます。
  1. 大規模なデータベースの場合、保存されたワークブックファイルも大規模なものになります。メニューからワークシート:ワークシートをクリアを選択して、データをクリアし、ワークブックを保存できます。後にそのワークブックをロードして、プレビューインポートSQL editor preview.pngをクリックしてデータの50行をプレビューでき、また、データのインポートボタンButton db Import Data.pngでデータベースからインポートすることもできます。
  2. クエリーを修正したい場合、ワークシートをアクティブにした状態でSQLエディタButton Open SQL Editer.pngまたは、クエリビルダDb editor connect.pngをクリックします。

SQLエディタ内でのLabTalkサポート

上のサンプルでは、ワシントン州のデータのみインポートしました。しかし、それはコード化されていないので、別の州をクエリーしたい場合、クエリーを変更する必要があります。このセクションでは、州名のLabTalk文字列変数を定義してクエリーを簡単に変更できるようにする方法を示します。

  1. 新規プロジェクトを開始します。メニューからファイル:データベースインポート:MyQuery.ODQを選択して、ワークシートに直接データをインポートします。
  2. SQLエディタを開くButton Open SQL Editer.pngをクリックしてSQLエディタを開きます。
  3. LabTalk文字列変数を追加するために、クエリー:LabTalkと選択してLabTalkサポート設定ダイアログを開きます。
    SQL editor preview.png
  4. LabTalk (%,$) 置換をする にチェックをつけます。
  5. ワシントン州を表すLabTalk文字列変数strCondを定義するために、以下のスクリプトを入力します。
    string strCond$ = "Washington";
    	
    これをクエリー前のスクリプト に入力します。OKをクリックします。
    SQL editor preview.png
  6. 右パネルのSQL文の最後で、WHERE文を次のように変更します。
    WHERE sp.name = '%(strCond$)'
    	
  7. Db editor connect.pngボタンをクリックしてSQL編集ボックス内のSQLクエリー文字列をプレビューします。
    SQL editor preview.png
  8. データのインポートボタンButton db Import Data.pngをクリックし、データをインポートします。ダイアログを閉じ、ワークシートにSQLクエリーを再保存するために、はいを選択します。
  9. これで、LabTalkサポート設定ダイアログのstrCond$を変更するだけで州名を変更できるようになり、SQLクエリーを変更する必要はありません。