11.1.12 ローストア表をカラムストア表に変更する方法
ローストア表をカラムストア表に変更したい場合は,対象のローストア表をいったん削除したあとで,カラムストア表として再定義する必要があります。
- 重要
-
ローストア表と比べると,カラムストア表には幾つかの制限事項があります。そのため,カラムストア表の制限事項を確認してから,ローストア表をカラムストア表に変更するようにしてください。カラムストア表の制限事項については,「5.2.2 ローストア表とカラムストア表の選択基準」の「(1) カラムストア表の制限事項」を参照してください。
- メモ
-
カラムストア表をローストア表に変更したい場合は,「11.1.13 カラムストア表をローストア表に変更する方法」を参照してください。
次の手順に従って,ローストア表をカラムストア表に変更してください。
手順
-
ローストア表に格納されているすべてのデータを出力する
adbexportコマンドで,ローストア表に格納されているすべてのデータをファイルに出力してください。
ローストア表がマルチチャンク表の場合に,adbexportコマンドを実行する際の留意事項を次に示します。
-
マルチチャンク表のチャンクの状態・構成を維持する必要がない場合
留意事項は特にありません。ローストア表に格納されているすべてのデータをファイルに出力してください。
-
マルチチャンク表のチャンクの状態・構成を維持する必要がある場合
ローストア表に格納されているすべてのデータを,チャンク単位でファイルに出力する必要があります。チャンク単位でデータを出力しないと,チャンクの状態・構成を維持したまま,カラムストア表にデータを格納できません。そのため,チャンク数分,エクスポートを行ってください。
チャンク単位でデータを出力する場合は,「11.4.5 チャンク単位にデータをエクスポートする方法」を参照してください。
-
-
ローストア表の定義情報を確認する
ローストア表を定義したときのCREATE TABLE文の指定内容を確認してください。カラムストア表を定義する際に使用します。
ローストア表を定義したときのCREATE TABLE文の指定内容がわからない場合は,「付録B.22 ディクショナリ表の検索」の「(28) 実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると,ローストア表を定義したときのCREATE TABLE文の指定内容が確認できます。
-
ローストア表に定義されているインデクスの定義情報を確認する
ローストア表にインデクスを定義している場合,インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。カラムストア表にインデクスを定義する際に使用します。
インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は,「付録B.22 ディクショナリ表の検索」の「(29) インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると,インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。
-
ローストア表を削除する
削除動作の指定を省略したDROP TABLE文で,ローストア表を削除してください。
-
カラムストア表を定義する
CREATE TABLE文で,カラムストア表を定義してください。CREATE TABLE文を作成する際の留意事項を次に示します。
-
手順2.で確認したローストア表を定義したときのCREATE TABLE文の指定内容を流用して,CREATE TABLE文を作成してください。
-
CREATE TABLE文のSTORAGE FORMATに,COLUMNを指定してください。
-
-
カラムストア表にインデクスを定義する
削除したローストア表にインデクスを定義していた場合,カラムストア表にCREATE INDEX文でインデクスを定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。
-
手順3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して,CREATE INDEX文を作成してください。
なお,ローストア表にB-treeインデクスを定義していた場合でも,カラムストア表にはB-treeインデクスを定義しないことを推奨します。詳細については,「5.2.2 ローストア表とカラムストア表の選択基準」の「(3) カラムストア表の検索時に使用されるB-treeインデクス」を参照してください。
-
カラムストア表には,テキストインデクスは定義できません。
-
-
カラムストア表にデータを格納する
adbimportコマンドで,手順5.で定義したカラムストア表に,手順1.で出力したすべてのデータを格納してください。
カラムストア表がマルチチャンク表の場合に,adbimportコマンドを実行する際の留意事項を次に示します。
-
マルチチャンク表のチャンクの状態・構成を維持する必要がない場合
adbimportコマンドには,-dオプションおよび-bオプションは指定しないでください。
-
マルチチャンク表のチャンクの状態・構成を維持する必要がある場合
手順1.でチャンク単位に出力したデータを,チャンク単位にインポートする必要があります。
-
手順1.でカレントチャンクだったチャンクのデータは,必ず最後に格納してください。
-
最初に格納するデータの場合は,-dオプションおよび-bオプションを指定しないで,adbimportコマンドを実行してください。
-
2回目以降に格納するデータの場合は,バックグラウンドインポートで格納してください。-bオプションを指定してadbimportコマンドを実行してください。手順1.でカレントチャンクだったチャンクのデータも,バックグラウンドインポートで格納してください。
-
-
-
ビュー表の無効化を解除する
手順4.で削除したローストア表を基表とするビュー表が無効化されます。そのため,カラムストア表の定義後に,ビュー表の無効化を解除する必要があります。「11.2.8 ビュー表の無効化を解除する方法」の「(6) 表を誤って削除してしまったことによってビュー表が無効化された場合」を参照して,ビュー表の無効化を解除してください。
これで,ローストア表をカラムストア表に変更できます。
- メモ
-
-
adbexportコマンドおよびadbimportコマンドについては,マニュアルHADB コマンドリファレンスを参照してください。
-
DROP TABLE文,CREATE TABLE文およびCREATE INDEX文については,マニュアルHADB SQLリファレンスを参照してください。
-