1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CData SoftwareAdvent Calendar 2019

Day 19

A5:SQL Mk-2 でSalesforce へのCRUD クエリを作成

Posted at

フリーのSQL 開発ツールといえば「A5:SQL Mk-2」が有名です。Windows ODBC に強い!というイメージです。ただのイメージで、他のDB 管理/クエリツールでもODBC は普通に使えるのですが。

この記事では、A5 Mk-2 からCData ODBC Drivers for Salesforce 経由でSQL クエリでSalesforce データをクエリしてみます。

image.png

A5:SQL Mk-2 をインストール

https://a5m2.mmatsubara.com/ からA5 Mk-2 をダウンロードして解凍します。

CData ODBC Driver for Salesforce の準備

CData ODBC Driver for Saleforce をダウンロード

CData ODBC Drivers サイトからSalesforce ODBC を選択します。
image.png

https://www.cdata.com/jp/drivers/salesforce/odbc/ からドライバーをダウンロードします。30日の無償評価版があります。

DL された.exe ファイルを実行してインストールを行います。

Salesforce アカウントに接続するDSN を設定

インストール完了後にODBC DSN 設定画面が開きます。
Salesforce に接続するには、以下の3つのプロパティの設定が最低必要です:

  • User: Salesforce のユーザー
  • Password: Salesforce のパスワード
  • Security Token: Salesforce の「私の設定」で発行したトークン
    image.png

入力したら、[接続のテスト]を押してSalesforce への接続を試します。問題がなければ[OK]を押してSalesforce への接続を確立させます。

A5 Mk-2 からSalesforce ODBC をクエリ

Salesforce ODBC を使う

[データベース]→[データベースの追加と削除]を開きます。
image.png

[64bit ODBCシステムデータソースを列挙する]にチェックを入れます。システムデータソースを利用するか、ユーザーデータソースを利用するかはどちらでもかまいません。
image.png

データベースとして、設定しているODBC DSN がツリービューで表示されます。CData ODBC Driver で設定されたDSN もここに表示されます。
image.png

[CData Salesforce Sys]をダブルクリップします。データベースログイン画面が開くので、Salesforce のユーザーとパスワードでログインします。
image.png

Salesforce のオブジェクトがテーブル・ビュー・ストアドプロシージャにモデル化されて表示されます。
image.png

[Lead]というテーブルを開いてみます。Lead オブジェクトで利用できるデータがカラムとしてモデル化されています。それぞれのカラムにはデータ型の情報も付いています。
image.png

では、実際にSQL を作成してみましょう。

Salesforce にクエリするSQL をA5 Mk-2 で作成する

対象のテーブル・ビューを右クリックして[SQL の作成]をクリックしてクエリ作成画面を開きます。

SELECT 文

SELECT にチェックを入れます。とりあえず全カラムを指定して条件なしでクエリしてみます。
image.png

以下のSQL クエリが生成されました。実行ボタンで実行するとSalesforce のLead オブジェクトがクエリされ、データがテーブルとして返されます。
image.png

--*DataTitle "Salesforce"."Lead"
--*CaptionFromComment
SELECT
  "Id"                                            -- Id
  , "IsDeleted"                                   -- IsDeleted
  , "MasterRecordId"                              -- MasterRecordId
  , "LastName"                                    -- LastName
  , "FirstName"                                   -- FirstName
  , "Salutation"                                  -- Salutation
  , "Name"                                        -- Name
  , "Title"                                       -- Title
  , "Company"                                     -- Company
  , "Street"                                      -- Street
  , "City"                                        -- City
  , "State"                                       -- State
  , "PostalCode"                                  -- PostalCode
  , "Country"                                     -- Country
  , "Latitude"                                    -- Latitude
  , "Longitude"                                   -- Longitude
  , "GeocodeAccuracy"                             -- GeocodeAccuracy
  , "Phone"                                       -- Phone
  , "MobilePhone"                                 -- MobilePhone
  , "Fax"                                         -- Fax
  , "Email"                                       -- Email
  , "Website"                                     -- Website
  , "PhotoUrl"                                    -- PhotoUrl
  , "Description"                                 -- Description
  , "LeadSource"                                  -- LeadSource
  , "Status"                                      -- Status
  , "Industry"                                    -- Industry
  , "Rating"                                      -- Rating
  , "AnnualRevenue"                               -- AnnualRevenue
  , "NumberOfEmployees"                           -- NumberOfEmployees
  , "OwnerId"                                     -- OwnerId
  , "IsConverted"                                 -- IsConverted
  , "ConvertedDate"                               -- ConvertedDate
  , "ConvertedAccountId"                          -- ConvertedAccountId
  , "ConvertedContactId"                          -- ConvertedContactId
  , "ConvertedOpportunityId"                      -- ConvertedOpportunityId
  , "IsUnreadByOwner"                             -- IsUnreadByOwner
  , "CreatedDate"                                 -- CreatedDate
  , "CreatedById"                                 -- CreatedById
  , "LastModifiedDate"                            -- LastModifiedDate
  , "LastModifiedById"                            -- LastModifiedById
  , "SystemModstamp"                              -- SystemModstamp
  , "LastActivityDate"                            -- LastActivityDate
  , "LastViewedDate"                              -- LastViewedDate
  , "LastReferencedDate"                          -- LastReferencedDate
  , "Jigsaw"                                      -- Jigsaw
  , "JigsawContactId"                             -- JigsawContactId
  , "CleanStatus"                                 -- CleanStatus
  , "CompanyDunsNumber"                           -- CompanyDunsNumber
  , "DandbCompanyId"                              -- DandbCompanyId
  , "EmailBouncedReason"                          -- EmailBouncedReason
  , "EmailBouncedDate"                            -- EmailBouncedDate
  , "SICCode__c"                                  -- SICCode__c
  , "ProductInterest__c"                          -- ProductInterest__c
  , "Primary__c"                                  -- Primary__c
  , "CurrentGenerators__c"                        -- CurrentGenerators__c
  , "NumberofLocations__c"                        -- NumberofLocations__c
FROM
  "Salesforce"."Lead"

ちなみにSalesforce の画面で確認したLead はこちらです。
image.png

次にフィルタリング条件を付けてみます。[Company]カラムに絞り込みを行います。カラム数も選択で絞ります。

SQL が生成されるので、Company に['伊達株式会社']を入れて絞り込みます。実行します。フィルタリングも普通に機能しますね。
image.png

--*DataTitle "Salesforce"."Lead"
--*CaptionFromComment
SELECT
  "Id"                                            -- Id
  , "LastName"                                    -- LastName
  , "FirstName"                                   -- FirstName
  , "Name"                                        -- Name
  , "Title"                                       -- Title
  , "Company"                                     -- Company
  , "Status"                                      -- Status
  , "Industry"                                    -- Industry
FROM
  "Salesforce"."Lead" 
WHERE
  "Company" = '伊達株式会社'

INSERT 文

次にINSERT 処理をやってみます。

INSERT 
INTO "Salesforce"."Lead" ("LastName", "FirstName", "Company") 
VALUES ('テスト', 'てすと','テスト株式会社')

1レコードがSalesforce に挿入されました。
image.png

試しにSELECT して確認すると確かに「テスト株式会社」が作成されています。
image.png

UPDATE 文

次に更新処理を行います。松平株式会社の一党25件のリードを徳川株式会社に変更します。

UPDATE "Salesforce"."Lead" 
SET
  "Company" = '徳川株式会社'

WHERE "Company" = '松平株式会社'

image.png

処理が完了して、更新されました。

DELETE 文

最後にDELETE 文を実行します。
「最上株式会社」のLead には消えてもらいましょう。

DELETE 
FROM
  "Salesforce"."Lead"

WHERE 
"Company" = '最上株式会社'

image.png

まとめ

おなじみのSQL 作成ツールで、CData ODBC Driver for Salesforce 経由でSalesforce を標準SQL でCRUD 操作することができました。

CData ODBC Drivers はほかにも150 種類を超えるSaaS/NoSQL 向けのODBC Driver を用意しています。是非、無償版からお試しください。

1
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?