TeradataからSnowflakeにデータ移行の検証 - 続き
前回は、Teradataからのデータ抽出方法についてご紹介しました。
今回はその続編として、抽出したデータをSnowflakeにロードする方法について解説します。
1. SnowSQL - COPY INTO によるデータロード準備(接続情報の設定)
Snowflakeにデータをロードするには、対象となるアカウントやデータベースへの接続情報が必要です。これらは コマンドラインで直接入力するのではなく、外部ファイルとして設定しておくと管理しやすくなります。
ここではその例として、config.cnf というファイルとしています。
以下は、接続情報を定義した設定ファイルのサンプルです:
外部ファイルの構造について
1つの設定ファイル内に、複数の接続情報をセクションごとにまとめて記述することが可能です。
構成は、以下のように「セクション名」「キー名」「値」で成り立っています。
カテゴリ | パラメータ | 説明 |
---|---|---|
セクション: connections.xxxx | xxxx は任意の文字列 | Snowflake接続情報を識別するセクション名 ここではその例として、xxxx はTESTとしています。 |
キー: アカウント名 | accountname | 接続先のSnowflakeアカウント名 |
キー: ユーザー名 | username | Snowflakeに接続するユーザー名 |
キー: パスワード | password | 上記ユーザーのパスワード |
キー: データベース名 | dbname | データロード先のデータベース名 |
キー: スキーマ名 | schemaname | データロード先のスキーマ名 |
キー: ウェアハウス名 | warehousename | クエリ実行・ロード処理で使用するウェアハウス名 |
ファイル保存について
設定が完了したら、任意のファイル名で保存します。今回はこの設定ファイルを Config という名前で保存しました。
このように外部ファイルを用意することで、接続先の切り替えが容易になり、スクリプトの汎用性と保守性が向上します。
2. SnowSQL - COPY INTO によるデータロード:ロード用SQLファイルの作成
Snowflakeへデータをロードするには、COPY INTO コマンドを記述したSQLファイル(資材)を作成します。ここではその例として、Sample_table.sql というファイルとしています。
以下は実際のファイル内容のイメージです:
パラメータ | 子パラメータ | 説明 |
---|---|---|
From ... | - | 外部ステージ名(TeradataのExportファイルが格納されたS3等) |
FILE_FORMAT | TYPE | ファイル形式:CSV を指定 |
FILE_FORMAT | FIELD_DELIMITER | 区切り文字:パイプラインを指定 |
FILE_FORMAT | DATE_FORMAT | 日付形式:Teradata Export時のフォーマットに合わせて指定(例:YYYY-MM-DD) |
FILE_FORMAT | TIME_FORMAT | 時間形式の指定(例:HH24:MI:SS) |
FILE_FORMAT | TIMESTAMP_FORMAT | タイムスタンプ形式の指定(例:YYYY-MM-DD HH24:MI:SS) |
FILE_FORMAT | FIELD_OPTIONALLY_ENCLOSED_BY | オプションの囲み文字:"(ダブルクォーテーション) |
FILE_FORMAT | COMPRESSION | 圧縮形式:Teradata側で使用したものに合わせて指定(例:GZIP) |
PATTERN | - | 対象ファイル名のパターン(例:'.*.gz') |
📘 詳細な構文やパラメータ指定については、以下の公式ドキュメントを参照ください:
https://docs.snowflake.com/ja/sql-reference/sql/copy-into-table
3.SnowSQL - COPY INTO によるデータロード:実行手順
作成したSQL資材をもとに、SnowSQLからコマンドを実行してSnowflakeへのデータロードを行います。
SnowSQLがインストールされた環境から、以下のコマンドを実行します。
実行コマンド例:
snowsql -config "<接続情報設定ファイル名>" -c "<セクション名>" -f ""
パラメータ | 説明 |
---|---|
-config | 接続情報を定義した設定ファイル名(フルパスでも可) |
-c(セクション名) | 設定ファイル内の該当セクション名(例:connections.test) |
-f(SQLファイル) | ロード対象のSQL資材ファイル名(例:Sample_table.sql) |
まとめ
SnowSQLの COPY INTO を使うことで、Teradataから抽出・変換されたファイルを、構造・形式を保ったままSnowflakeに効率よくロードできます。
設定ファイル・ロード資材の構成を明確にすることで、環境の切り替えや複数テーブルへの展開にも柔軟に対応できます。