SQL Server へのマイグレーションツール、[FlySpeed Migrate]https://www.activedbsoft.com/overview-migrate.html) は、ODBC データソースで接続したデータをSQL Server やMySQL にコピーできるツールです。
この記事では、Salesforce データのコピーをSQL Server に作成します。CData ODBC Driver for Salesforce を利用することによって、Salesforce データをFlySpeed Database Migration ツールで利用可能にします。
CData ODBC Driver for Salesforce のインストールと接続設定
ドライバーのダウンロード
CData ODBC Driver for Salesforce は、Salesforce 内のデータを仮想RDB としてODBC 経由でのアクセスを可能にするライブラリです。
- 32-bit、64-bit アプリケーションをサポート。
- ODBC 3.8 準拠のネイティブプロトコルドライバー。
- ANSI SQL-92 をサポート。
- Unicode をサポートし、多様な言語、データをサポート。
- Windows、Linux、macOS にクロスプラットフォームで対応するODBC Drivers。
製品をDL してインストールを行います。デフォルト設定のままでクリックしてDL してください。
Salesforce への接続
Salesforce アカウントへの接続にはSalesforce 側でセキュリティトークンを発行する必要があります。
Salesforce 画面の右上の[アカウント名]→[私の設定]を開き、[個人用]からセキュリティトークンを発行しておきます。
CData ODBC Driver for Salesforce のインストール終了後にODBC DSN の設定画面が開きます。
[接続のテスト]で接続を確認し、問題がなければ[OK]を押して接続を確立します。
FlySpeed Database Migration でSalesforce データをコピー
[FlySpeed Migrate]https://www.activedbsoft.com/overview-migrate.html) をダウンロードします。Free 版は、一部のデータしかマイグレーションできないそうです。とりあえず今回は動作確認なのでFree 版を使っています。
今回はSalesforce データをODBC 経由で取得し、SQL Server に新規テーブルを作ってデータを移行します。
上のステップで作成した[CData Salesforce Source]を選択します。
スキーマおよびオブジェクト選択です。設定してもいいですし、すべてのオブジェクトを取得することもできます。CData ODBC Driver によってSaleforce 内のオブジェクトがRDB 的なスキーマを付与されています。
移行するオブジェクトを選択します。今回は[Lead]オブジェクトを使います。
移管先のSQL Server のデータベースを設定します。今回は事前に[FlySpeed]という空のデータベースを作っておきましたので、それを使います。テーブルなどはまだ作っていません。
これまでのステップで指定したSalesforce Lead オブジェクトのテーブルスキーマをSQL Server に作成しに行きます。ODBC 経由で取得したスキーマを書き込むSQLを自動生成してくれていますので、実行します。実行されたSQL は以下でした。
CREATE TABLE [Lead](
[Id] nvarchar(36) NOT NULL,
[IsDeleted] bit NOT NULL,
[MasterRecordId] nvarchar(36) NULL,
[LastName] nvarchar(160) NOT NULL,
[FirstName] nvarchar(80) NULL,
[Salutation] nvarchar(80) NULL,
[Name] nvarchar(242) NOT NULL,
[Title] nvarchar(256) NULL,
[Company] nvarchar(510) NOT NULL,
[Street] nvarchar(510) NULL,
[City] nvarchar(80) NULL,
[State] nvarchar(160) NULL,
[PostalCode] nvarchar(40) NULL,
[Country] nvarchar(160) NULL,
[Latitude] float NULL,
[Longitude] float NULL,
[GeocodeAccuracy] nvarchar(80) NULL,
[Phone] nvarchar(80) NULL,
[MobilePhone] nvarchar(80) NULL,
[Fax] nvarchar(80) NULL,
[Email] nvarchar(160) NULL,
[Website] nvarchar(510) NULL,
[PhotoUrl] nvarchar(510) NULL,
[Description] ntext NULL,
[LeadSource] nvarchar(80) NULL,
[Status] nvarchar(80) NOT NULL,
[Industry] nvarchar(80) NULL,
[Rating] nvarchar(80) NULL,
[AnnualRevenue] float NULL,
[NumberOfEmployees] int NULL,
[OwnerId] nvarchar(36) NOT NULL,
[IsConverted] bit NOT NULL,
[ConvertedDate] date NULL,
[ConvertedAccountId] nvarchar(36) NULL,
[ConvertedContactId] nvarchar(36) NULL,
[ConvertedOpportunityId] nvarchar(36) NULL,
[IsUnreadByOwner] bit NOT NULL,
[CreatedDate] datetime NOT NULL,
[CreatedById] nvarchar(36) NOT NULL,
[LastModifiedDate] datetime NOT NULL,
[LastModifiedById] nvarchar(36) NOT NULL,
[SystemModstamp] datetime NOT NULL,
[LastActivityDate] date NULL,
[LastViewedDate] datetime NULL,
[LastReferencedDate] datetime NULL,
[Jigsaw] nvarchar(40) NULL,
[JigsawContactId] nvarchar(40) NULL,
[CleanStatus] nvarchar(80) NULL,
[CompanyDunsNumber] nvarchar(18) NULL,
[DandbCompanyId] nvarchar(36) NULL,
[EmailBouncedReason] nvarchar(510) NULL,
[EmailBouncedDate] datetime NULL,
[SICCode__c] nvarchar(30) NULL,
[ProductInterest__c] nvarchar(510) NULL,
[Primary__c] nvarchar(510) NULL,
[CurrentGenerators__c] nvarchar(200) NULL,
[NumberofLocations__c] float NULL
)
GO
ALTER TABLE [Lead]
ADD CONSTRAINT [Lead_PRIMARYKEY_Id]
PRIMARY KEY CLUSTERED ([Id])
WITH (
IGNORE_DUP_KEY = OFF)
GO
dbo.Lead テーブルが作成されたので、移行先テーブルとして選択します。ここでフィールドごとのマッピングがカスタマイズできます。カスタマイズなしで次に進みます。
SQL Server 側をSSMS で見てみましょう。たしかにSalesforce のLead データが移行されています。
まとめ
このようにCData ODBC Driver for Salesforce を使うことで、FlySpeed Database Migration でSalesforce データをSQL Server にノーコードで移行することができました。
CData ODBC Driver は、他にも150以上のSaaS およびNoSQL へのODBC アクセスを実現します。
また、CData では、CData Syncという製品でSQL Server だけでなく多様なRDB やクラウドデータストア・DWH へのデータ移行や反復同期が可能です。より細かなクエリ設定、タイマー起動の反復同期、差分更新などのニーズにもお答えします。