> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: S3, SFTP/FTPS등의 스토리지 연계 기능에 대해

> Integrate.io ETL이 지원하는 S3, SFTP, FTPS, Azure Blob Storage, Google Cloud Storage, HDFS 등 다양한 파일 스토리지 연계 기능과 와일드카드 검색 같은 유연한 옵션을 자세히 설명합니다.

이번 가이드에서는 Xplenty의 스토리지 연계 기능에 대해 자세히 설명합니다.
**Xplenty가 지원하는 스토리지 타입**

* S3  ※ S3의 권한 설정은 [이곳(영어)](https://www.integrate.io/docs/allowing-xplenty-access-to-data-on-amazon-s3/)의 순서를 참고로 설정해 주십시오.

* SFTP  ※ SSH Tunnel 및 Reverse SSH Tunnel 지원

* FTPS  ※ Explicit mode만 가능

* Azure Blob Storage

* Google Cloud Storage

* HDFS(Hadoop Distributed File System)

**편리한 기능**

## **1. 유연한 Source 폴더·파일 취득 설정**

### **1-1. 와일드 카드 검색에 의한 조건 설정**

와일드 카드 검색을 통해 조건에 맞는 **모든 파일** 을 검색할 수 있습니다.

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-1.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=4421983e68e15854fc32cb07982bd355" alt="filestorage-part01-ko image 1" width="512" height="255" data-path="images/creating-packages/filestorage-part01-ko/image-1.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/3VjhamV1QQa4gpEByY1d](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/3VjhamV1QQa4gpEByY1d))

### **1-2. 사용자 변수에 의한 취득 조건 설정**

상대 날짜별 조건 설정
함수를 사용하면 오늘이나 어제와 같은 상대 날짜를 기준으로 조건 설정이 가능합니다.

* 어제를 표현하는 함수식:
  `ToString(SubtractDuration(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'PT24H'), 'yyyy/MM/dd')`

* 오늘을 표현하는 함수식 :
  `ToString(SwitchTimeZone(CurrentTime(),'Asia/Seoul'),'yyyy-MM-dd')`

또한 위의 함수식을 변수로 정의하여 데이터를 가져오는 디렉토리와 파일 이름을 보다 유연하게 설정할 수 있습니다.

### **1-3. 정규 표현에 의한 조건 설정**

정규 표현식을 사용하면 보다 풍부한 조건 설정이 가능합니다.

*

`/2020-01-&#123;01,02,03&#125;/impressions/*`
/2020-01-01/impressions/ *, /2020-01-02/impressions/* , /2020-01-03/impressions/\* 중 하나와 일치.

*

`/201[0-9]/01/*`
/2010/01/ *, /2011/01/* , /2012/01/\* , ... , /2019/01/\* 중 하나와 일치.

### **1-4. 복수의 파일이 검색 조건으로 검색되는 경우**

복수 파일이 파일 검색 조건으로 검색되는 경우, 검색된 모든 파일을 취득합니다.
**단, 검색된 모든 파일의 필드 이름도 같아야 하는 점에 주의 하십시요.**

## **2. 새로운 파일만 처리**

지금까지의 처리완료 이력를 Manifest 파일로 저장하고, 폴더 내의 파일 중 처리완료 이력에 없는 새로운 파일만을 처리하도록 할 수 있습니다. 

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-2.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=aa8837e48b86e0dbdb202c230d2b4ddc" alt="filestorage-part01-ko image 2" width="961" height="487" data-path="images/creating-packages/filestorage-part01-ko/image-2.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/MnBAlkwoQsO6xMz8dgXw](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/MnBAlkwoQsO6xMz8dgXw))

Manifest path는 Manifest file도 같이 입력하십시요. 그리고, Manifest file은 보존 용량의 절약을 위해 **gzip형식**으로 보존됩니다. 실제 내용을 볼때는 압축을 해제한 후에 텍스트 에디터로 보기 바랍니다. 

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-3.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=66c17683a8c30feb65ebd77209a3148b" alt="filestorage-part01-ko image 3" width="852" height="438" data-path="images/creating-packages/filestorage-part01-ko/image-3.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/t0wDv6QiWD3L4mRcQn7A](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/t0wDv6QiWD3L4mRcQn7A))

Manifest file의 내용은 지금까지 가져온 파일 정보(파일 경로나 파일 사이즈)가 저장되어 있기에 리스트에 없는 파일만을 처리 대상으로서 판별합니다.
※ Manifest의 경로를 지정한 경우, 경로에 지정된 디렉토리가 없으면 자동으로 작성됩니다.
**3. 일본어 인코딩에 대응**

## **3-1. 인코딩 옵션：Shift-JIS와 Windows-31J**

Xplenty는 Shift-JIS로 인코딩된 CSV, TSV 파일 이외에도 Shift\_JIS의 확장 문자 코드인 Windows-31J도 지원하고 있습니다. Windows-31J를 사용으로 인해 Shift-JIS에서는 바르게 표시되지 않는 「①」, 「㈱」등의 확장 문자를 포함한 텍스트 파일에 대해서도 바른 처리가 가능합니다 .
스토리지의 Source 및 Destination 컴포넌트에서 다음과 같이 구성할 수 있습니다.

\*\*Source 컴포넌트
\*\*Source action에서 **Copy, merge and process all files** 또는 **Process only new files (Incremental load)** 를 선택하고 Character encoding 목록 상자에서 **Windows-31J** 를 선택합니다.

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-4.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=0cf951f5cf2479e79aa245e38fe3722e" alt="filestorage-part01-ko image 4" width="540" height="481" data-path="images/creating-packages/filestorage-part01-ko/image-4.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/aAqtxDglQymMitP6m98n)\[](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/aAqtxDglQymMitP6m98n\)\[)

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-5.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=8d95e4c46b2157f39296bf84039800e5" alt="filestorage-part01-ko image 5" width="561" height="344" data-path="images/creating-packages/filestorage-part01-ko/image-5.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/3OwtbmcYTqinWS1X6DVC](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/3OwtbmcYTqinWS1X6DVC))
\*\*Destination 컴포넌트
\*\*Destination action에서 **Use intermediate storage and copy files to an existing directory in destination** 를 선택하고 Character encoding 목록 상자에서 **Windows-31J** 를 선택합니다.

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-6.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=76d55b51eb06047bc3d091a4784243f3" alt="filestorage-part01-ko image 6" width="771" height="365" data-path="images/creating-packages/filestorage-part01-ko/image-6.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/9MZM0VsDSf2cF3c6d4s8](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/9MZM0VsDSf2cF3c6d4s8))

## **3-2. 줄바꿈 코드의 지정**

\*\*Destination 컴포넌트
\*\*Destination 컴포넌트로 파일 저장시에 줄바꿈 코드의 지정이 가능하게 되었습니다. 이를 통해 LF(Unix, Linux)외에도 CRLF(Windows)도 저장할 수 있습니다.

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-7.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=cbe2fdbbfca911415a75173bf6968df1" alt="filestorage-part01-ko image 7" width="348" height="83" data-path="images/creating-packages/filestorage-part01-ko/image-7.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/YixQwrShO8wEHaQXVZwh](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/YixQwrShO8wEHaQXVZwh))

## **3-3. 이스케이프 문자 지정**

**Source / Destination 컴포넌트**

\[

<Frame>
  <img src="https://mintcdn.com/integrateio/erg_659RimicWdnj/images/creating-packages/filestorage-part01-ko/image-8.webp?fit=max&auto=format&n=erg_659RimicWdnj&q=85&s=6e66099c277e8c0373d76e755951f46d" alt="filestorage-part01-ko image 8" width="565" height="307" data-path="images/creating-packages/filestorage-part01-ko/image-8.webp" />
</Frame>

]\([https://cdn.filestackcontent.com/auto\_image//compress/cache=expiry:max/McCEqT6xT26iSyrjrFIQ](https://cdn.filestackcontent.com/auto_image//compress/cache=expiry:max/McCEqT6xT26iSyrjrFIQ))
**마지막으로**

Xplenty의 스토리지 연계 기능을 사용하면 스토리지와 DB사이 또는 스토리지와 SaaS사이의 연계를 보다 유연하고 간단하게 실현할 수 있습니다. CSV, TSV, 로그 파일은 물론 JSON과 **[XML 파일의 연계](https://www.integrate.io/ko/docs/etl/etc-part05-ko/)** 도 변환을 포함하여 유연하게 실현할 수 있습니다.

Xplenty의 스토리지 연계에 관심이 있는 분은 꼭 \*\*[이 링크](https://try.integrate.io/kr-demo/)\*\*를 통해 온라인 데모신청으로 내용을 확인해 보시기 바랍니다. 

\<!-- notionvc: 143c9c99-a2e9-4e53-bdce-c2f906e845da -->

##

\<!-- Google Tag Manager hidden fields -->

\<!-- End Google Tag Manager hidden fields -->

\<!-- Text input-->

Get Started

Free 7-day trial. Easy setup. Cancel any time
