Embulk를 파일 압축 해제, 문자 코드 변환에만 사용해보기
5223 단어 Embulk
나는 S3에 놓여있는 CSV 파일을 BigQuery에 넣을 때 잘 활용하지만 script로 쓰면 조금 번거로운 여러 파일의 압축을 풀고 sjis에서 utf8로의 변환이 소량의 설정을 기술하는 것만으로 할 수 있습니다.
어느 때, 미묘하게 스키마가 다른 파일군을 처리할 필요가 있고,
일단,
ファイルの解凍、sjisからutf8への変換
하고 싶지만,스키마가 다르기 때문에 여러 개의 yaml을 작성하는 or 동적인 처리를 강요당하는 장면이 있었습니다.
Embulk에서 동적 처리를 한 적이 없었기 때문에 다른 방법을 생각했습니다.
embulk-parser-none이라는 플러그인을 사용하면 parse하지 않는다 = 스키마가 다른 파일에서도 하나의 yaml로 처리 할 수 있다고 생각하고 실천하면 여러 파일을 압축 해제, sjis에서 utf8로 변환 할 수 있습니다 네.
그 때, Embulk를 파일의 압축해제, 문자 코드 변환에만 사용한 설정을 남겨둡니다.
embulk-parser-none이란?
저자 소개 기사을 참조하십시오.
Embulk를 파일 압축 해제, 문자 코드 변환에만 사용해보기
하나의 압축 된 sjis csv를 압축 해제하고 문자 코드를 utf8로 변환하는 데모입니다.
(Embulk는 install 완료)
htps : // 기주 b. 코 m / 응 아시 키 / 에 m 부 lk_ 아 s_ 데코 r 에 필요한 파일을 넣었으므로 시도해 볼 수 있습니다.
필요한 플러그인 install
소개한 embulk-parser-none과 압축 해제를 위한 플러그인 embulk-decoder-commons-compress를 install하십시오.
$ embulk gem install embulk-parser-none
$ embulk gem install embulk-decoder-commons-compress
준비된 압축 파일이 sjis의 csv인지 확인
터미널의 인코딩이 utf-8이면 다음과 같이 문자가 깨져야합니다.
$ unzip unzip_charset_test_sjis.csv.zip
Archive: unzip_charset_test_sjis.csv.zip
$ nkf --guess unzip_charset_test_sjis.csv
Shift_JIS (CRLF)
$ cat unzip_charset_test_sjis.csv
���O,�^�C�v
�q�g�J�Q,�ق̂�
�[�j�K��,�݂�
�t�V�M�_�l,����%
yaml의 내용에 관하여
똥 p_ 짱 t_ st_s js. CSV. 지 p 을 압축 해제하고 문자 코드를 변환하고 result.csv를 출력하는 설정입니다.
parser의 type은 none
이지만 charset
와 newline
를 설정해야합니다.
out의 formatter입니다만, 저자 소개 기사 와 같이, 원의 내용 그대로 토해내는 설정을 합니다. 단, charset
와 newline
를 설정합시다.
exec min_output_tasks
는 여러 파일이 출력되는 것을 방지하기 위해 설정되었습니다.
embulk_test.yamlin:
type: file
path_prefix: unzip_charset_test_sjis.csv.zip
decoders:
- {type: commons-compress}
parser:
type: none
column_name: payload
charset: MS932
newline: CRLF
exec:
min_output_tasks: 1 # disable page scatterings
out:
type: file
path_prefix: result
sequence_format: ""
file_ext: .csv
formatter:
type: csv # embulk-parser-none の説明通り
charset: UTF-8
newline: LF
delimiter: 0 # embulk-parser-none の説明通り
quote_policy: NONE # embulk-parser-none の説明通り
header_line: false # embulk-parser-none の説明通り
실행하다
출력한 result.csv가 utf-8이 되어 있는 것을 확인할 수 있었는지 생각합니다.
$ embulk run embulk_test.yaml
# result.csvが作成される
$ nkf --guess result.csv
UTF-8 (LF)
$ cat result.csv
名前,タイプ
ヒトカゲ,ほのお
ゼニガメ,みず
フシギダネ,くさ
embulk-parser-none으로 Embulk의 활용 방법이 넓어집니다
Reference
이 문제에 관하여(Embulk를 파일 압축 해제, 문자 코드 변환에만 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nassy20/items/349a8864da5200b8f31c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
하나의 압축 된 sjis csv를 압축 해제하고 문자 코드를 utf8로 변환하는 데모입니다.
(Embulk는 install 완료)
htps : // 기주 b. 코 m / 응 아시 키 / 에 m 부 lk_ 아 s_ 데코 r 에 필요한 파일을 넣었으므로 시도해 볼 수 있습니다.
필요한 플러그인 install
소개한 embulk-parser-none과 압축 해제를 위한 플러그인 embulk-decoder-commons-compress를 install하십시오.
$ embulk gem install embulk-parser-none
$ embulk gem install embulk-decoder-commons-compress
준비된 압축 파일이 sjis의 csv인지 확인
터미널의 인코딩이 utf-8이면 다음과 같이 문자가 깨져야합니다.
$ unzip unzip_charset_test_sjis.csv.zip
Archive: unzip_charset_test_sjis.csv.zip
$ nkf --guess unzip_charset_test_sjis.csv
Shift_JIS (CRLF)
$ cat unzip_charset_test_sjis.csv
���O,�^�C�v
�q�g�J�Q,�ق̂�
�[�j�K��,�݂�
�t�V�M�_�l,����%
yaml의 내용에 관하여
똥 p_ 짱 t_ st_s js. CSV. 지 p 을 압축 해제하고 문자 코드를 변환하고 result.csv를 출력하는 설정입니다.
parser의 type은
none
이지만 charset
와 newline
를 설정해야합니다.out의 formatter입니다만, 저자 소개 기사 와 같이, 원의 내용 그대로 토해내는 설정을 합니다. 단,
charset
와 newline
를 설정합시다.exec
min_output_tasks
는 여러 파일이 출력되는 것을 방지하기 위해 설정되었습니다.embulk_test.yaml
in:
type: file
path_prefix: unzip_charset_test_sjis.csv.zip
decoders:
- {type: commons-compress}
parser:
type: none
column_name: payload
charset: MS932
newline: CRLF
exec:
min_output_tasks: 1 # disable page scatterings
out:
type: file
path_prefix: result
sequence_format: ""
file_ext: .csv
formatter:
type: csv # embulk-parser-none の説明通り
charset: UTF-8
newline: LF
delimiter: 0 # embulk-parser-none の説明通り
quote_policy: NONE # embulk-parser-none の説明通り
header_line: false # embulk-parser-none の説明通り
실행하다
출력한 result.csv가 utf-8이 되어 있는 것을 확인할 수 있었는지 생각합니다.
$ embulk run embulk_test.yaml
# result.csvが作成される
$ nkf --guess result.csv
UTF-8 (LF)
$ cat result.csv
名前,タイプ
ヒトカゲ,ほのお
ゼニガメ,みず
フシギダネ,くさ
embulk-parser-none으로 Embulk의 활용 방법이 넓어집니다
Reference
이 문제에 관하여(Embulk를 파일 압축 해제, 문자 코드 변환에만 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nassy20/items/349a8864da5200b8f31c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)