Salesforce에서 SQL Server로 데이터 가져오기
페이지 정보
작성자 GrapeCity
본문
관련링크
외부 응용 프로그램, 보고 또는 분석과 같이 사용자가 Salesforce에서 SQL Server로 데이터를 가져오려 하는 경우가 많습니다. 이 블로그에서는 를 사용해 Salesforce에서 데이터를 가져와 SQL Server로 푸시하는 방법에 대해 알아보겠습니다.
Salesforce에서 SQL Server로 데이터를 가져와 삽입하려면 다음과 같은 단계를 거쳐야 합니다.
Salesforce에 대한 인증
데이터 및 서비스 요청 제한
데이터의 스키마
위 스키마에 부합하는 관련 테이블을 SQL Server에 생성
Salesforce에서 데이터를 가져와 SQL Serve 테이블에 저장
이제 각 단계를 자세히 살펴보겠습니다.
인증
Salesforce는 REST API에 연결하려는 외부 응용 프로그램에 대한 OAuth 인증을 지원합니다. 이 에서는 응용 프로그램이 OAuth를 지원하도록 설정하는 방법을 설명합니다.
Salesforce에 연결하려면 다음 정보가 필요합니다.
클라이언트 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 클래스가 있습니다.
이제 클래스를 사용해 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를 구성으로 업데이트합니다. 그날의 요청이나 데이터 한도를 초과한 경우 고려할 사항이 또 있어야 하며, 추가 요청은 규정된 시간이 지난 후에 이루어져야 합니다.
를 다운로드하여 작동하는 모습을 확인하십시오.
댓글목록
등록된 댓글이 없습니다.