Salesforce에서 SQL Server로 데이터 가져오기 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

Salesforce에서 SQL Server로 데이터 가져오기

페이지 정보

작성자 GrapeCity 작성일 21-04-09 17:04 조회 3,145회 댓글 0건

본문

외부 응용 프로그램, 보고 또는 분석과 같이 사용자가 Salesforce에서 SQL Server로 데이터를 가져오려 하는 경우가 많습니다. 이 블로그에서는 ComponentOne Salesforce ADO.NET 데이터 커넥터를 사용해 Salesforce에서 데이터를 가져와 SQL Server로 푸시하는 방법에 대해 알아보겠습니다.

Salesforce에서 SQL Server로 데이터를 가져와 삽입하려면 다음과 같은 단계를 거쳐야 합니다.

  • Salesforce에 대한 인증

  • 데이터 및 서비스 요청 제한

  • 데이터의 스키마

  • 위 스키마에 부합하는 관련 테이블을 SQL Server에 생성

  • Salesforce에서 데이터를 가져와 SQL Serve 테이블에 저장

이제 각 단계를 자세히 살펴보겠습니다.


인증

Salesforce는 REST API에 연결하려는 외부 응용 프로그램에 대한 OAuth 인증을 지원합니다. 이 문서에서는 응용 프로그램이 OAuth를 지원하도록 설정하는 방법을 설명합니다.

Salesforce에 연결하려면 다음 정보가 필요합니다.

  • 토큰 EndPoint

  • API URL

  • 클라이언트 ID

  • 클라이언트 암호

  • Salesforce 사용자 이름 및 암호

  • 보안 토큰


데이터 크기 및 서비스 요청 제한

Salesforce 시스템은 온라인으로 제공되므로 결과 크기와 부하 균형 호출 수에 특정 제한이 있습니다. 이 문서에서는 버전에 따른 제한과 제한 초과 시 오류에 대해 자세히 설명합니다.


데이터의 스키마

데이터를 가져올 엔터티의 스키마는 여기 Salesforce에 있습니다. 또는 Salesforce용 ComponentOne ADO.NET 데이터 커넥터의 연결 개체에서 스키마 정보를 가져올 수 있습니다.

이 블로그의 목적상 주문 데이터는 국가별로 지난 몇 년 동안의 데이터가 필요합니다. 이 보고서에는 다음 필드가 필수적입니다.

  • 대금 청구 주/도

  • 대금 청구 주소

  • 대금 청구 구/군/시

  • 대금 청구 우편 번호

  • 대금 청구 국가

  • 합계 금액

  • 유효일


다음은 Salesforce에 따라 위 필드에 배정된 스키마입니다.

차트


SQL Server에서 테이블 만들기

SQL Server에서 테이블을 만드는 데 필요한 데이터의 스키마에 따라 데이터는 Salesforce에서 가져온 후 아래 테이블로 푸시됩니다.

CREATE TABLE [dbo].[OrderReport]
(  

[BillingStreet] VARCHAR(MAX) NULL,
[BillingCity] VARCHAR(50) NULL,
[BillingState] VARCHAR(MAX) NULL,
[BillingCountry] VARCHAR(MAX) NULL,
[BillingPostalCode] VARCHAR(50) NULL,
[EffectiveDate] DATETIME NULL,
[TotalAmount] DECIMAL NULL  

)



Salesforce에서 데이터를 가져와 SQL Server에 저장

그다음에는 .NET Core 콘솔 응용 프로그램을 만들고 NuGet에서 다음 패키지를 추가합니다.

  • AdoNet.Salesforce

  • Data.SqlClient

첫 번째 라이브러리는 Salesforce에서 데이터를 가져오는 데 도움이 되고, 두 번째 라이브러리에는 데이터를 SQL Server에 대량 복사할 수 있게 해주는 SqlBulkCopy 클래스가 있습니다.

이제 C1.AdoNet.Salesforce 클래스를 사용해 Salesforce에서 주문 데이터를 가져와야 합니다. 이것은 잘 알려진 ADO.NET 클래스와 유사합니다.

private void SalesforceToSqlServer()

{

  //Read OAuth credentials from config
  var config = this.config.Value;  
  string connectionString = string.Format("Username={0};Password={1};Security Token={2};OAuth Client Id={3}; OAuth Client Secret={4}; OAuth Token Endpoint={5}; Url={6}; Use Pool = false; Max Page Size = 200; Use cache = false;",

  config.Username, config.Password, config.SecurityToken, config.ClientId, config.ClientSecret, config.OAuthTokenEndpoint, config.Url); using (C1SalesforceConnection con = new C1SalesforceConnection(connectionString))  
{

  con.Open();

  var cmd = con.CreateCommand();

  //Query to select data from salesforce server.

  cmd.CommandText = "Select BillingStreet,BillingCity,BillingState,BillingCountry,BillingPostalCode,EffectiveDate,TotalAmount from [Order]"; var reader = cmd.ExecuteReader();  

  //Copy data to SQL Server OrderReport table

// The GetConnectionString() function gets the SQL Server connection string 
  SqlBulkCopy bc = new SqlBulkCopy(GetConnectionString());  
    bc.DestinationTableName = "OrderReport"; 
    try  
    {
      bc.WriteToServer(reader);
    }

    catch (Exception ex)

    {

      //log error

    }

  }

}


SQL Server 업데이트

쿼리를 삽입 쿼리로 변경하고, 쿼리에 타임스탬프 매개 변수인 “LastModifiedDate”를 추가하고, 이 매개 변수를 구성에 저장하여 Salesforce 데이터로 SQL Server를 주기적으로 업데이트하는 서비스로 예시를 변환할 수 있습니다. 이 서비스는 타임스탬프 뒤에 추가되는 데이터를 지속적으로 가져오고 매번 삽입 후 LastModifiedDate를 구성으로 업데이트합니다. 그날의 요청이나 데이터 한도를 초과한 경우 고려할 사항이 또 있어야 하며, 추가 요청은 규정된 시간이 지난 후에 이루어져야 합니다.

데이터 가져오기

데스크톱 DataConnector 탐색기를 다운로드하여 작동하는 모습을 확인하십시오.


  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

인기글

더보기
  • 인기 게시물이 없습니다.
그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2023 GrapeCity inc.