> ## 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/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-1.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=a65ec031721704d6e8da786c20774bf8" alt="filestorage-part01-ko image 1" width="512" height="255" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-1.webp" />
</Frame>

### **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/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-2.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=8a02e792c0899708ee750607b9a3c107" alt="filestorage-part01-ko image 2" width="961" height="487" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-2.webp" />
</Frame>

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

<Frame>
  <img src="https://mintcdn.com/integrateio/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-3.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=1781c2b5646920880b56c376d549a094" alt="filestorage-part01-ko image 3" width="852" height="438" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-3.webp" />
</Frame>

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/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-4.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=d5044ee20a05f5a9cf2d0995b72e93fd" alt="filestorage-part01-ko image 4" width="540" height="481" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-4.webp" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/integrateio/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-5.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=76ece1e8db8975f7cecc4a7fadb10f7b" alt="filestorage-part01-ko image 5" width="561" height="344" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-5.webp" />
</Frame>

**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/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-6.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=3758e04529655abe0ab702f2b1d72959" alt="filestorage-part01-ko image 6" width="771" height="365" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-6.webp" />
</Frame>

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

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

<Frame>
  <img src="https://mintcdn.com/integrateio/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-7.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=c1887d1ea7405c3010b3b548ed116d86" alt="filestorage-part01-ko image 7" width="348" height="83" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-7.webp" />
</Frame>

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

**Source / Destination 컴포넌트**

<Frame>
  <img src="https://mintcdn.com/integrateio/xT-xj4RSbhtyUCwA/images/korean-knowledge-base/filestorage-part01-ko/image-8.webp?fit=max&auto=format&n=xT-xj4RSbhtyUCwA&q=85&s=b3fbdcd25626c5e2f97b22b3a477051d" alt="filestorage-part01-ko image 8" width="565" height="307" data-path="images/korean-knowledge-base/filestorage-part01-ko/image-8.webp" />
</Frame>

**마지막으로**

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

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