NEWSニュース&ブログ

Redshiftの歩き方!! 投入データを準備する前にこれだけは押さえておきたいデータ準備の勘所7選!!

この記事は最終更新から9年以上経過しています。内容が古くなっている可能性があります。

投稿日:2015/8/21

皆様。こんにちは。タイガー・ジェット・シンです。「データ分析」、「ビックデータ」などが叫ばれている昨今。「ちょっとRedshift導入してみようかな。」っと考えておられる、企業IT、ICTご担当者様は多いのではないでしょうか?でも、Redshiftへデータを投入すると言う事は、既存のDatabaseとRedshiftを連携させる必要があり、取込データを準備する時の注意点を事前に知っていないと苦戦してしまうものです。なので、今回は、Redshiftへ投入する取込データを準備するにあたって、押さえておきたいポイントをまとめましたのでご紹介させて頂きます。


①対応している文字コードはUTF-8のみ

Redshiftで対応している文字コードは最大4バイトのUTF-8のみ対応しています。SJIS等は対応していないので、データ抽出時には気を付けましょう。

 

②マルチバイト文字に対応しているテーブルの型はVARCHAR型のみ

UTF-8の文字列だったとしてもマルチバイトは、テーブルのCHAR型のカラムへ投入しようとしてもエラーとなります。マルチバイト文字のデータが入るのはVARCHAR型のみです。なので、必然的にCHAR型に投入できるデータはシングルバイト文字となります。

 

③列の長さに気を付けましょう。UTF-8では1文字で最大4バイトとなる可能性があります 最大4バイトのUTF-8のみ対応していますよ。っと紹介しましたが、ここでも注意が必要です。1文字最大4バイトで構成されるので、1文字4バイトの漢字4文字で構成されている場合には、カラムはVARCHAR(16)以上のバイト数が必要な事に注意しましょう。あれ?Oracleでは入っていたデータが、Redshiftになると桁あふれになったぞ!のパターンは大体これです。

 

④レコードの最後のフィールドに特殊文字を含めるのはやめましょう

レコードの最後のフィールドを表すために特殊文字を入れるのはやめましょう。特殊文字や埋め込み改行などが含まれる場合には、COPYコマンドのESCAPEオプションを利用します。

 

⑤NULL(UTF-8 0000)またはバイナリゼロ(0x00)が含まれる場合注意しましょう

データ内に、NULLやバイナリゼロが含まれる場合には、注意が必要です。具体的にはデータ投入時にエラーになります。どうしても入ってしまう場合にはCOPYコマンドのNULL ASオプションを使用してデータを投入する事は出来ます。

 

⑥タイムスタンプ型のカラムはすべて統一されたフォーマットとしましょう

タイムスタンプ型はデフォルトでYYYY-MM-DD HH24:MI:SSとなります。この形式となっていないデータを投入しようとすると、思わぬ形でデータが投入されることになります。データの投入時にタイムスタンプ型のフォーマットは変更可能で、COPYコマンドのTIMEFORMATオプションなどで変更する事は可能です。

 

⑦「’(シングルクオーテーション)」、「”(ダブルクオーテーション)」などの利用は計画的に

「’(シングルクオーテーション)」や「”(ダブルクオーテーション)」がデータ内に存在している場合、思わぬ時にエラーとなります。たとえば、COPYコマンドの中にはcsvオプションと言うオプションがあり、このオプションを利用すると、csv形式をRedshiftにて自動で判断し、データの取り込みを行う事が可能ですが、このcsvオプションには「”(ダブルクオーテーション)」は引用符扱いになると言う特性があり、データ内に「”(ダブルクオーテーション)」がある場合にはエラーとなります。このように、データ内に「’(シングルクオーテーション)」、「”(ダブルクオーテーション)」などが存在している場合や、区切り文字(デリミタ)に指定している文字が入っていないかは十分に注意が必要です。

 

以上7点となります。Redshiftは大量のデータであっても、並列分散処理にて高速に処理できる反面、OracleやSQL Serverなどとの連携は意外と考慮点があります。これらを頭の片隅に入れてもらえれば、Redshiftへのデータベース連携は意外とスムーズに行えるのではないでしょうか?それではまたどこかで!



山口正寛(1984年生まれ おうし座/2013年入社)

株式会社システムサポート 東京支社 クラウドコンサルティング事業部所属。
AWSソリューションアーキテクト。
社内では主に、データベース(特にOracle、Redshift)を担当。DBA、コンサルタントなどを経験。最近減量中。