SQL EXPORT DATABASEコマンドはデータベースのすべてのテーブルのすべてのレコードをSQLフォーマットで書き出します。SQLではこのグローバルな書き出し処理は"ダンプ"と呼ばれます。
注: このコマンドは直接あるいはODBC経由で開かれた外部接続では使用できません。
テーブルごとに、コマンドは他のデータベースにデータを読み込む際に必要となるSQL文を含むテキストファイルを生成します。このファイルを直接SQL EXECUTE SCRIPTコマンドで使用して、他の4Dデータベースにデータを読み込むことができます。
書き出しファイルはfolderPathで指定された保存先フォルダ内に作成される"SQLExport"フォルダに配置されます。"SQLExport" フォルダが指定された場所に既に存在する場合、コマンドは警告なしにそれを置き換えます。
引数に空の文字列を渡すと、4Dは標準のフォルダを選択ダイアログボックスを表示します。デフォルトでダイアログボックスはセッションを開いたユーザのカレントフォルダーを表示します (Windows では"マイ ドキュメント"、Mac OS では"書類")。
書き出されるテーブルごとに、コマンドは以下のアクションを行います:
- 保存先フォルダにテーブル名によるサブフォルダを作成する
- サブフォルダ内にテキストファイル"Export.sql"を作成します。このファイルはBOM付きUTF-8でエンコードされます。ファイルには書き出されたデータに対応するSQLのINSERT 命令が含まれます。フィールドの値はコロンで区切られます。テーブル中のフィールド数よりデータが少ない場合がありますが、この場合残りのフィールドはNULLとして扱われます。
- テーブルにBLOBやピクチャ、またはテキストフィールド (レコードの外に格納されたテキスト) が含まれる場合、コマンドはデフォルトで追加のサブフォルダ"BLOBS"を"Export.sql" ファイルと同階層に作成し、必要なだけ"BlobsX"サブフォルダを作成します。これらのサブフォルダにはテーブルレコードのすべてのBLOB、ピクチャー、および外部テキストフィールドの内容が分離されたファイルとして格納されます。BLOB ファイルは"BlobXXXXX.BLOB"、テキストファイルは"TEXTXXXXX.TXT" (XXXXX はアプリケーションが生成するユニーク番号) という名称がつけられます。ピクチャーファイルはPICTXXXXX.ZZZZ (XXXXX はアプリケーションが生成するユニーク番号で、ZZZZ は拡張子)。可能であれば、ピクチャはオリジナルのネイティブフォーマットで書き出され、対応する拡張子が付けられます (.jpg, .png 等)。ネイティブフォーマットでの書き出しができない場合、ピクチャは4D の内部フォーマットで書き出され、.4PCT 拡張子が付けられます。
このデフォルトの動作はオプションのfieldLimitSize引数を使用して、フィールドに含まれるデータのサイズに基づき調整することができます (後述)。
注: リモートモードの4DからSQL EXPORT DATABASEを実行した場合、この動作は異なります。このコンテキストでは、外部に保存されるデータは自動で"Export.sql"ファイルに含まれます。
numFiles 引数を渡すと、サブフォルダがnumFiles数以上のBLOB やピクチャを含まないよう、必要な応じて"BlobsX" サブフォルダを作成します。numFiles 引数が省略されると、デフォルトでコマンドはファイル数を200に制限します。0を渡すと、それぞれのサブフォルダは少なくとも1つのファイルを含みます。
fileLimitSize 引数を渡すと、ディスク上に作成されるそれぞれの"Export.sql"のサイズを (キロバイト単位で) 制限できます。作成された書き出しファイルのサイズがfileLimitSizeで設定した制限に達すると、4Dはレコードの書き込みを停止し、ファイルを閉じ、"ExportX.sql" (Xは一連番号を表す) という新しいファイルを同階層に作成します。このメカニズムにおいては、"ExportX.sql"ファイルの実際のサイズはfileLimitSizeを超える点に留意してください。なぜならサイズの制限を超えるときに書き出されているレコードが完全に書き出された後にファイルが閉じられるからです (つまり1レコードが2つのファイルに分割して書き出されることはないということです)。設定可能な最小サイズは100 KBで最大サイズ (デフォルト値) は100,000KB (100MB) です。
オプションのfieldLimitSize引数では、外部BLOB、ピクチャー、およびテキストフィールドデータがこの引数で設定されるサイズを下回る場合に、分離したファイルではなくメインの"Export.sql"に含めるそのサイズを設定します。この引数の目的はディスク上に作成されるサブフォルダーやファイルの数を制限することで書き出し処理を最適化することにあります。
この引数はバイト単位で設定します。例えば1000を渡すと、1000バイト以下の外部BLOB、ピクチャー、およびテキストフィールドはメインの書き出しファイルに組み込まれます。
書き出しファイルに組み込まれるバイナリーデータ (BLOBとピクチャー) はX'0f20'形式の16進フォーマットで書き込まれることに留意してください (標準のSQL16進記法、literal参照)。このフォーマットは4D SQLエンジンにより自動でサポートされます。
fieldLimitSize引数が省略されるとデフォルトで外部BLOB、ピクチャー、およびテキストフィールドの内容はサイズにかかわらず常に分離したファイルに書き出されます。
書き出しファイル中では、テーブル中のフィールドより値の数が少ない場合があります。この場合、空のフィールドはNULLとみなされます。フィールドにNULL値を渡すこともできます。
書き出しが正しく実行されるとOK変数に1が。そうでなければ0が設定されます。