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

概要

このチュートリアルは説明のみを目的としています。チュートリアルに示されている接続文字列は、インストールされたデータベースには接続しません。チュートリアルで説明したプロセスを実行できるように、独自のサーバーに AdventureWorks データベースをセットアップする場合は、この GitHub ページを参照してください。

Originでは、SQLエディタを使ってデータベースからデータをインポートできます。

SQLエディタは、SQLクエリの直接書き込みと編集が可能なエディタです。これは熟練のデータベースユーザにとって非常に便利で、ユーザはSQLスクリプトで LabTalk変数を定義できます。

この機能では、繰り返し使用のためにデータベース接続ODSファイルに保存でき、データベース接続とクエリODQファイルに保存できます。

このチュートリアルでは、SQLサーバへの接続を構築する方法と、SQLエディタを使用して特定の表から希望のデータを抽出する方法を示します。

学習する項目

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

  • 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 内にある表が右側パネルにリストされます。接続文字列がメッセージタブにあります。
    SQL editor preview.png
    あるいは、すでに接続文字列がある場合、ファイル:接続文字列を編集... メニューを選択して、接続文字列エディタダイアログを開きます。次のSQL文字列を入力し、OKをクリックして接続を作成します。
    Provider=SQLOLEDB.1; Password=labtalk2015; Persist Security Info=TRUE; USER ID=CONNECT; Initial Catalog=AdventureWorks2008; DATA SOURCE=noho
    
  6. ファイル:接続を保存を選択して、 MyDataSource.ods としてデータソースを保存します。
  7. ここで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
    WHERE sp.Name='Washington'
    ORDER BY e.BusinessEntityID
    
  8. 結果データをプレビューボタンSQL editor preview.pngをクリックしてデータをプレビューします。プレビューに問題なければ、ワークシートにデータをインポートボタンButton db Import Data.pngをクリックし、データをインポートします。インポートすると、ワークシートはデータベースと接続され、左上に黄色のアイコンが表示されます。
    SQL editor preview.png
  9. メニューからファイル:接続とクエリーを新規に保存を選択して、この接続とクエリーをMyQuery.odqとして保存します。SQLエディタを閉じます。

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

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 をクリックします。

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クエリーを変更する必要はありません。