1. ホーム
  2. データベース
  3. デービーツー

DB2におけるデータの移動(I)

2022-01-23 08:22:36
DB2におけるいわゆるデータムーブには、以下のようなものがあります。  
1. データの取り込み(インポート)  
2. データの書き出し(Export)  
3. データの読み込み(Load)  
インポートとロードは、どちらも関連する DB2 コマンドを使用して、何らかの形式のファイルからデータベース内のテーブルにデータを保存する方法です  
エクスポートとは、DB2データベースのテーブルから、ある形式のファイルにデータを保存することです  
データムーブメントが行うこと  
異なるデータベース管理システム間でデータを転送したい場合、データ移動は通常最も実用的な方法の一つです。どのデータベース管理システムもいくつかの共通のファイル形式をサポートしており、この共通のインターフェースを介して、異なるシステム間でデータを簡単に転送することができるからです。  
この3つのコマンドのうち、テーブルからファイルへのデータ転送は、通常、エラーがなく、不正なデータもないため、エクスポートが最も簡単です。  
コマンドの説明の前に、まずファイルフォーマットについて紹介します。DB2 のデータ移動に使用されるファイル形式は 4 種類あります。  
1. ASC - ASCII文字のストリームで、非区切りのASCIIファイルです。データストリームの行は行区切り文字で区切られ、行内の各列は開始位置と終了位置で定義されます。例えば  
10 本社 160 コーポレート ニューヨーク  
15 ニューイングランド 50 ボストン東部  
20 ミッドアトランティック 10 イースタンワシントン  
38 南大西洋 30 東部アトランタ  
42 五大湖 100 中西部 シカゴ  
51 平原地帯 140 中西部ダラス  
66 太平洋 270 サンフランシスコ西部  
84 マウンテン290 デンバー西部  
2. DEL - ASCII文字ストリームでもある、区切り付きのASCIIファイル。ストリーム内の行は行区切り文字で区切られ、行内の列値は列区切り文字で区切られる。file type modifierは、これらの区切り文字のデフォルト値を変更するために使用される。たとえば  
10,"Head Office",160,"Corporate","New York"  
15,ニューイングランド、50,東部、ボストン。  
20,"Mid Atlantic",10,"Eastern","Washington"  
38,"South Atlantic",30,"Eastern","Atlanta"  
42,"Great Lakes",100,"Midwest","Chicago"  
51,平原地帯(140,中西部),ダラス(51,ダラス)  
66,270,000,000,000,000,000,000,000円 サンフランシスコ  
84,"Mountain",290,"Western","Denver"  
3. WSF - (ワークシート・フォーマット)は、Lotusシリーズのソフトウェアとデータを交換するために使用されるワークシート・フォーマットです。  
4. PC/IXF - Integration Exchange Format (IXF) データ交換アーキテクチャを適応させたもので、ヘッダーレコード、テーブルレコード、テーブルの各カラムに対するカラム記述子レコード、テーブルの各行に対する1つまたは複数のデータレコードなど、長さが可変の多数の列から構成されています。PC/IXFファイルのレコードは、文字データを含むフィールドで構成されています。  
第一部:データの書き出し(Export)  
例1:Orgテーブルの全データをファイルC:㊙ORG.TXTにエクスポートします。  
del select * from org の c:\org.txt にエクスポートします。  
delのWhereはエクスポート先のファイルの種類を示し、この場合は非区切りのテキストファイルです。続くselect * from orgは、その結果を問い合わせるSQL文であり、エクスポートされるデータということになります。  
例2:del形式ファイルの書式設定コントローラを変更する場合  
del modified by coldel$ chardel'' decplusblank select * from staff の c:\staff.txt にエクスポートします。  
この例では、modified節を使用して、さまざまな記号を制御している。coldelはフィールド間のスペーサーを示し、デフォルトではカンマであるが、現在は$記号に置き換えられている;chardelは文字列フィールドがどの記号で参照されているかを示し、デフォルトでは2つのダブルクォートで囲まれているが、現在は2つのシングルクォートで囲まれている;decplusblankは10進データ型に対して、デフォルトでは10進データの前にプラスまたはマイナス記号があるので、先頭にプラス記号ではなくスペースが使われることを示す;deplasblankは10進データ型に対して、プラス記号ではなく、マイナス記号が使われていることを示している;deplasblankは10進データ型の前にマイナス記号が付いているが、デフォルトではマイナス記号は付いていない。  
例3:データをASC形式でファイルに書き出す場合  
ExportコマンドはASC形式のファイルをサポートしていませんので、ASCのような通常の形式でエクスポートしたい場合は、プログラマー自身が変換操作を行う必要があります。これは、あらゆる種類のデータ型を固定長の文字列に変換し、エクスポートする各フィールドを1つのフィールドに統合するものです。  
例えば、次のような構造のテーブルnを作成する。  
create table n(a int,b date,c time,d varchar(5),e char(4),f double)  
次に、2つのデータを挿入します。  
insert into n values(15,'2004-10-21','23:12:23','abc', 'hh',35.2)  
insert into n values(5,'2004-1-21','3:12:23','bc', 'hhh',35.672)  
これら2つのデータを通常のフォーマットでファイルに書き出すには、次のようにします。  
d の c:\test.txt にエクスポートします。