0312345678910111213141516171819202122232425262728293005

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【 --/--/-- (--) 】 スポンサー広告 | TB(-) | CM(-)

Teradata ExpressへのTPC-Hデータのロード

Teradata Expressには既にデモ用?評価用?にTPC-Hのデータがロードされている。
ただ、件数はかなり絞られてるみたいだ。他のデータベースと件数を揃えるため、一度削除してロードし直すことにしよう。

PostgreSQLでやったのと同じように、ゼロから、つまりユーザーやデータベースを作るところから始めてみよう。
Teradata社の公式SNSにもチュートリアル的なページがあるので、それを参考にしながら...

ネットで探しても探しても、Teradataについては日本語の記事が皆無に近い。システム採用担当者に向けたようなハイレベルなメッセージは見かけるけど、設計やコードを起こすレベルは本当に皆無と言ってよい。技術的に深い考察をしてるブログで、Teradataについてもたまに書いてるのをひとつ見つけたけど、それ以外は見当たらなかった。
仕方ないので、英語のページとにらめっこしながら実験。まぁコンピューターに関する言葉は、下手に訳してない方がわかりやすい場合も多々あるけど。


Teradataデータベースの削除



データベースの削除は、Delete DatabaseというSQLコマンドでデータベース内のテーブルなどを一層してから、Drop Databaseコマンドでデータベースそのものを削除する。
ログに入力したSQLが冗長的に表示されるのが鬱陶しいなぁ。この引用以降は気付いたら削除することにしよう。

.logon localhost/dbc
Password:

*** Logon successfully completed.
*** Teradata Database Release is 14.00.03.02
*** Teradata Database Version is 14.00.03.02
*** Transaction Semantics are BTET.
*** Session Character Set Name is 'ASCII'.

*** Total elapsed time was 1 second.

BTEQ -- Enter your SQL request or BTEQ command:
delete user tpch;

delete user tpch;

*** Database's tables deleted.
*** Total elapsed time was 5 seconds.

BTEQ -- Enter your SQL request or BTEQ command:
drop user tpch;

drop user tpch;

*** Database/User has been dropped.
*** Total elapsed time was 7 seconds.



Teradataユーザーの作成



ユーザーの作成は、Create UserというSQLコマンド。ユーザーに対し容量の設定ができる。容量の設定をすると、そのユーザーに対しデータベースのようにテーブルやビューなどを作成する事ができる。

つまり、スキーマ、データベース、テーブル空間などのようなものを作る必要が一切ない。こりゃ楽だ。

もちろん、大規模に運用を展開するような業務用データベースの場合は、共通のデータベース・スキーマを作って、好き勝手できないきちんと領域や権限をコントロールしたユーザーを必要に応じ公開するような形でしっかり定義・コントロールするだろうけど。

ま、評価用であれば、めんどうな事は考えず、これだけ。Teradata Studioで見ると、tpchデータベースがsamplesデータベースの下に作られていたので、今回もそのように作りなおす。

BTEQ -- Enter your SQL request or BTEQ command:
create user tpch from samples as password=tpch perm=1500000000;
*** Failure 3541 The request to assign new PERMANENT space is invalid.
Statement# 1, Info =0
*** Total elapsed time was 1 second.


...と思いきや、1.5GBも領域が確保できないというエラーが出た。トータルで4GBの評価版をダウンロードしてきたからには、どこかに空き領域があるはず。領域を他から融通しないとダメという事か。

Teradata StudioのData Source Explorerツリーから、右クリックで出てくるTeradata->Move Spaceメニューで空き領域をSamplesへ移動させる。


Teradataテーブルの作成



作成した評価用ユーザーtpchの中に、TPC-Hの8テーブル全てを作成する。
ユーザーtpchでログインして、単純にcreate table文を実行すると、同ユーザーの領域内にテーブルが作成される。(引用は8つあるテーブルのうち1つのみ)

BTEQ -- Enter your SQL request or BTEQ command:
create user tpch from samples as password=tpch perm=1500000000;
*** User has been created.
*** Total elapsed time was 1 second.



Teradataへのデータのロード



まずは、他データベースでやった時と同様に、sedで全入力ファイルからレコード末尾の区切り文字を削除する。これ、実際に性能評価試験とかやる人達も同じようなエラーに遭遇してると思うんだけど、なんで残り続けてるんだろうな。

sed -I 's/\(.*\)|$/\1/' nation.tbl


Teradataでテキストファイルをデータベース上のテーブルへロードするには、tdloadというコマンドを使う。PostgreSQLではコマンドラインインターフェイスpsqlでログインしてから、SQLもしくはpsqlのコマンドとしてデータをテーブル上へコピーする仕組みだったが、TeradataではOS上の独立したローダーを起動する仕組みのようだ。

DeveloperExchangeの記事を見ると、-fとか-tとかの引数でロード時に必要な情報を与えているようだ。tdloadコマンドのヘルプを表示させると、指定できるパラメータがわかる。非常に細かい動作の指示ができるようだけど、今回の目的としてはスルー。

TDExpress14.0.3_Sles10:/tmp/tpchdata # tdload -h localhost -f nation.tbl -t nation -u tpch -p tpch -d '|'
Teradata Parallel Transporter Load Operator Version 14.00.00.08
$LOAD: private log specified: LoadLog
...
$LOAD: Statistics for Target Table: 'nation'
$LOAD: Total Rows Sent To RDBMS: 25
$LOAD: Total Rows Applied: 25
$LOAD: Total Rows in Error Table 1: 0
$LOAD: Total Rows in Error Table 2: 0
$LOAD: Total Duplicate Rows: 0
...
Job step MAIN_STEP completed successfully
Job root completed successfully


select count(*) from nation;
*** Query completed. One row found. One column returned.
*** Total elapsed time was 1 second.
Count(*)
-----------
25

PostgreSQLのときにくらべ、膨大なメッセージが表示されるけど、どうやら正しくロードできたようだ。余計な部分は省いてログを掲載。
PostgreSQLはLinuxをはじめとするU*x文化の影響を受けてか、問題なく動いてるときはシステム側からの情報提供は最小限にとどめるという思想で動いてんだろうな。


 
スポンサーサイト
【 2014/04/07 (Mon) 】 データベース Teradata | TB(0) | CM(0)
プロフィール

Ed U Song

Author:Ed U Song
社内ノマドなエンジニア。
仕事で触れる機会のないものを自宅環境作って実験。

スポンサーリンク
最新コメント
最新トラックバック
検索フォーム


                                         
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。