PowerFX V1.0 移行説明書 - Microsoft(R) Windows(R) -
|
目次
索引

|
5.2.3.2 ファイル移行機能(cnvdbrecコマンド)の使用方法
ここでは、cnvdbrecコマンドの起動方法、記述形式、パラメーター、記述例について説明します。
cnvdbrecコマンドの起動方法を以下に示します。
- コマンドプロンプトを起動します。
コマンドプロンプトの起動方法を以下に示します。
- Windows(R)の[スタート]−[ファイル名を指定して実行]を選択します。
- ファイル名を指定して実行ダイアログボックスで、cmdと入力して[OK]ボタンをクリックします。
⇒コマンドプロンプトが起動します。
- cnvdbrecコマンドの記述形式にしたがってパラメーターを指定し、[Enter]キーを押します。
cnvdbrecコマンドの記述形式は、以下のとおりです。

■パラメーター
- 入力ファイル名
- 物理ファイルの場合は、.PF形式のファイルを、マルチボリューム物理ファイルの場合は、.MPF形式のファイル名を200バイト以内で指定します。

物理ファイルを指定する場合は、指定する物理ファイルが存在するフォルダに、物理ファイル領域(レコード格納域)が存在していることを確認してください。
マルチボリューム物理ファイルを指定した場合は、以下の確認が必要です。
- 指定したマルチボリューム物理ファイルが存在するフォルダがあるフォルダと同じ階層に、マルチボリューム物理ファイルを構成する物理ファイルのライブラリ名と同名のフォルダが存在する。
例)MPF.MPF(ライブラリ名:LIB1)というマルチボリューム物理ファイルは、PF1.PF(ライブラリ名:LIB2)とPF2.PF(ライブラリ名:LIB3)の2つの構成物理ファイルから構成されていた場合のファイル構成を以下に示します。
C:\LIB1\MPF.MPF
C:\LIB2\PF1.PF
C:\LIB2\PF1.DAT
C:\LIB3\PF2.PF
C:\LIB3\PF2.DAT
- マルチボリューム物理ファイルで定義された物理ファイルのライブラリ名と同名のフォルダに、物理ファイルおよび物理ファイル領域(レコード格納域)が存在する
- 出力SQLテーブル名
- 移出先を、以下の形式で指定します。
- SQL Server
「データベース名.スキーマ名.テーブル名」
- Oracle
「スキーマ名.テーブル名」
- SQLテーブル名は、-logpathパラメーターで指定したフォルダ名と合わせて、180バイト以内の文字列で指定してください。SQLテーブル名は、必ず指定してください。
- -dsn ODBCのデータソース名
- ODBCのデータソース名を32バイト以内の文字列で指定します。
- 必須パラメーターであるため、省略できません。
- -logpath ログファイル格納フォルダ名
- ログファイルを格納するフォルダ名を、180バイト以内のフルパスで指定します。
必須パラメーターであるため、省略できません。
- -f 出力CSVファイル名
- レコードをファイルに移出する場合に、移出するCSVファイル名をフルパスで指定します。
省略すると、SQLテーブルに移出されます。
- -a
- 移出先のSQLテーブルに、レコードを追加形式で出力します。
省略すると、移出先のSQLテーブルを初期化して、レコードを追加します。
- -c
- 移出したレコード件数を表示します。
-nパラメーターが指定されている場合は、-cを指定しても移出したレコード件数は表示されません。省略すると、移出したレコード件数は表示されません。
- -j 移出先コード系
- 移出したレコードの文字コードを指定します。-jに続けて、以下のいずれかを指定します。省略すると、移出したレコードの文字コードはShift-JISになります。
- sjis
移出したレコードの文字コードをShift-JISにします。
- sjisms
移出したレコードの文字コードをShift-JISMSにします。
- -m 移出元コード系
- 文字コードの変換モードを指定します。-mに続けて、以下のいずれかを指定します。
- 省略すると、文字コードの変換モードは「EBCDIC カナ」になります。
- ebcdics
文字コードの変換モードを「EBCDIC 英小文字」にします。
- ebcdicn
文字コードの変換モードを「EBCDIC カナ」にします。
- -n
- メッセージを表示させない場合に指定します。
省略すると、メッセージが表示されます。
- -s 警告エラー停止件数
- ログファイルに出力するエラー件数を指定します。
指定した件数のエラーが発生した場合、移行処理を中止します。件数は1〜2147483647の範囲で指定します。
省略すると、エラーが発生しても移行処理を継続します。
- -x 英数字項目名
- 指定した英数字項目の先頭2バイトをバイナリデータとし、3バイト目以降を英数字文字データとして変換する場合に指定します。
SMED混在項目の内容をそのまま英数字項目に格納すると、先頭2バイトが数値、3バイト目から文字データが格納されてしまいます。この場合、英数字項目の内容はコード変換できません。このような場合の英数字項目を -x で指定します。
省略すると、すべての英数字項目内のデータは、すべて英数字文字データとして変換されます。
- -u "ユーザー名" "パスワード"
- 移出先(データベース)のユーザー名とパスワードを二重引用符で囲んで指定します。省略した場合はWindows認証が指定されたものとして動作します。パスワード中に、二重引用符を含む場合は、¥"を指定します。¥の場合には\\を指定します。
- -dbms データベース名
- データベース名を指定します。-dbmsに続けて、sql-serverまたはoracleを指定します。
省略すると、sql-serverが指定されたものとして動作します。
- -kanji 漢字種別
- 文字コードの変換形式を指定します。-kanjiに続けて、以下のいずれかを指定します。
省略すると、文字コードを字形重視で変換します。
- sjis78
文字コードをShift-JIS 領域重視変換で変換します。
- sjis83
文字コードをShift-JIS(SJISMS)(字形重視)で変換します。
cnvdbrecコマンドの記述例を以下に示します。
cnvdbrec c:\asp\data1.PF db1.schema1.table1 -dsn datasource -logpath c:\log |
cドライブ直下のASPフォルダにある「data1.PF」のレコードを、「db1.schema1.table1」というテーブルに移出します。
■ログファイル
ログファイルには、警告情報および使用したODBC関数でエラーとなった場合の詳細情報が出力されます。
ログファイルはcnvdbrecコマンドの起動時に以下の名前で作成します。
ログファイル名: データベース名_スキーマ名_テーブル名_YYYYMMDD_hhmmss.log |
また、ファイルサイズの上限を設けていないため、必要に応じて-sパラメーターで制限をかけてください。
ログファイルの上書きは行いませんので、利用者が不要な場合には削除してください。
■対応するデータ型について
ASPのデータベース資産のデータ型とSQL ServerやOracleのデータ型は異なっているため、ASPのデーターベース資産の移行の際には、対応するSQL ServerやOracleのデータ型に合わせる必要があります。
以下にASPのデータベース資産のデータ型に対応するSQL ServerおよびOracleのデータ型を示します。
なお、項目サイズは、ASPのデータベース資産の項目サイズより大きければ移行は可能です。
表5.11 ASPのデータベース資産のデータ型に対応するデータ型(データ型番号)
ASP データベース資産データ型 |
SQL Server対応データ型 |
Oracle対応データ型 |
データ型 |
項目サイズ
(バイト数) |
データ型(データ型番号) |
項目サイズ
(バイト数) |
データ型(データ型番号) |
項目サイズ
(バイト数) |
X |
英数字 |
1〜9999
(桁数と同じ) |
CHAR(1) |
文字列 |
1〜8000
(桁数と同じ) |
CHAR (1) |
1〜2000
(桁数と同じ) |
BINARY(-2)
(ユーザー指定) |
バイナリデータ |
(最大8000) |
RAW(-3)
(ユーザー指定) |
最大2000 |
N |
漢字 |
1〜4999
(桁数×2) |
CHAR(1)
2文字分必要です |
文字列 |
2〜4000
(桁数×2) |
CHAR (1)
2文字分必要です |
2〜1000
(桁数×2) |
NCHAR(-8) |
日本語 |
2〜4000
(桁数×2) |
NCHAR (-8) |
2〜1000
(桁数×2) |
U |
外部10進数 |
1〜18桁
小数0〜18桁
(桁数と同じ) |
NUMERIC(p,s) |
固定小数点数 |
小数部の桁数を含めて1〜38桁 |
NUMBER(p,s)
(3) |
精度pは1〜38桁、位取りsは-84〜127 |
P |
内部10進数 |
1〜18桁
小数0〜18桁
(桁数÷2+1) |
DECIMAL(p,s) |
B |
2進数字項目 |
1〜4桁 |
SMALLINT(5) |
2バイト整数 |
− |
NUMBER(p,0)
(2) |
− |
5〜9数桁 |
INT(4) |
4バイト整数 |
− |
− |
10〜18桁 |
BIGINT(-5) |
8バイト整数 |
− |
NUMBER(p,0)
(3) |
− |
小数桁が存在する場合 |
DECIMAL(3) |
固定小数点数 |
− |
NUMBER(p,s)
(3) |
− |
I |
4バイト整数 |
|
INT(4) |
4バイト整数 |
− |
NUMBER(p,0)
(3) |
− |
2バイト整数 |
|
SMALLINT(5) |
2バイト整数 |
− |
− |
F |
単精度浮動小数点数(IEEE) |
項目長:
4バイト |
REAL(7) |
浮動小数点数
(4バイト) |
− |
FLOAT(8) |
4バイト |
RAW(-3) |
倍精度浮動小数点数(IEEE) |
項目長:
8バイト |
FLOAT(6) |
浮動小数点数
(8バイト) |
− |
FLOAT(8) |
8バイト |
RAW(-3) |
単精度浮動小数点数(M型) |
項目長:
4バイト |
BINARY(-2) |
バイナリデータ |
4バイト |
RAW(-3) |
4バイト |
倍精度浮動小数点数(M型) |
項目長:
8バイト |
BINARY(-2) |
バイナリデータ |
8バイト |
RAW(-3) |
8バイト |
拡張倍精度浮動小数点 |
項目長:
12バイト |
BINARY(-2) |
バイナリデータ |
12バイト |
RAW(-3) |
12バイト |
4倍精度浮動小数点 |
項目長:
16バイト |
BINARY(-2) |
バイナリデータ |
16バイト |
RAW(-3) |
16バイト |
L |
BLOB |
|
CHAR(1) |
文字列 |
− |
CHAR (1) |
− |
T |
ビット |
|
BINARY(-2) |
バイナリデータ |
− |
RAW(-3) |
− |
−:なし
注意事項
- ASP データベース資産のデータ型X(英数字)、N(漢字)では、9999桁までのデータが格納できますが、SQL Serverでは8000桁、Oracleでは2000桁までのデータしか格納できません。そのため、SQL Serverでは8000桁、Oracleでは2000桁以上のデータではデータの切り捨てが発生します。また、格納できる桁以下の場合は移行先(ASP データベース資産のデータ型)の項目長が移行元より小さい場合は、異常終了します。
- ASP データベース資産のデータ型U、P、B(小数桁あり)では、移行先より移行元(ASP データベース資産のデータ型)の桁数が大きい場合は、異常終了します。
- ASP データベース資産のデータ型と移行先のデータ型が一致(上記表参照)しない場合は、異常終了します。
- ログファイル出力メッセージに出力されるSQL ServerやOracleの項目型は、上記表内のデータ型番号で示されます。
- OracleのFLOAT型の値の範囲(*1.0E-130 〜 *9.9E+125)は、ASP データベース資産の単精度/倍精度浮動小数点(IEEE)と異なります。このため、移行時に、OracleのFLOAT型の値の範囲を超えると、Oracleにより数値のオーバーフロー、アンダーフローまたは0へのまるめが発生する場合があります。FLOAT型でエラーとなる場合には、RAW型(無変換)を設定し移行を行ってください。
- ASP データベースの単精度/倍精度浮動小数点(IEEE)については、移行後の値は、データベースに依存してしまうため、誤差が発生することがあります。
- 小数桁がある2進数字項目は、DECIMAL(p,s)またはNUMBER(p,s)に移行しますが、小数点桁がある2進数項目についてはPowerRDBconnectorではサポートしていません。
移出元のASPデータベースには、項目のデータ型の範囲を超えたデータが格納されている場合があります。このようなデータの扱いについて以下に示します。
- 移出元のデータ型がXおよびNの場合、日本語データに、X'A1A1'(16進数)というデータが含まれていた場合、日本語の空白に置き換えられます。
- Oracleの場合、ASP データベースの2進数字項目および2、4バイトの整数項目において、ASP データベースで指定した桁数よりデータ変換後の桁数が大きい場合は、「桁落ちが発生する可能性があります」のメッセージが出力されるとともに、上位桁が切り捨てられます。
- SQL ServerのSMALLINT、INT、BIGINTの値の範囲を以下に示します。以下の範囲を超える場合、「数値変換できないデータを検出しました。データは0が設定されました。」のメッセージが出力されるとともに、移行先のデータには0が設定されます。
- SMALLINT
-32,768 から 32,767 まで。
- INT
-2,147,483,648 から 2,147,483,647まで 。
- BIGINT
-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 まで
- 移出元データの符号の扱いについて以下に示します。
- データ型Pの場合は最下位バイトの下位4ビットを、データ型Uの場合は最下位バイトの上位4ビットを、符号部として扱います。
- データ型UとPの符号部(16進表記)は、以下のように扱います。
0、7、8、A、C、E、F → 正の数
B、D → 負の数
1〜6、9 → データエラーとなり移行先には0が設定されます。
- 移出元のデータ型が符号無しの場合、データに符号部が設定されているデータは、データの符号が優先されてしまうため、符号部以外の値は、正しく設定されないことがあります
- データ型Bとデータ型Iのデータについては、移出元のデータ型が符号付きの場合は最上位ビットを符号とみなし、移出元のデータ型が符号無しの場合は、最上位ビットを含めて数値データとして扱います。
■コマンド実行時の注意事項
- cnvdbrecコマンドはODBCを経由してレコードを移行しているため、レコード件数が多くなればなるほど処理時間がかかります。その場合は、−fパラメーターを指定して、CSVファイルに全レコードを出力した後、SQL Serverのツールであるbcpユーティリティを使用して、レコードを移行してください。
- 必要なパラメーターを指定せずに、cnvdbrecコマンドを実行すると、ヘルプが表示されます。
- ファイル名、フォルダ名およびデータソース名に指定する文字は、指定した文字列を二重引用符(")で囲んでください。
- ファイル名、フォルダ名およびデータソース名に指定する文字に、二重引用符で囲んだ記載がある場合は、囲まれた二重引用符の前に円記号(\)を指定してください。

- パラメーターのフォルダ名に日本語が含まれる場合には、フォルダ名の最後に"\"を付けてください。
All Rights Reserved, Copyright(C) 富士通株式会社 2005