クラウドのファイルからのデータのロード

PL/SQLパッケージDBMS_CLOUDは、クラウドのファイルからAutonomous Database on Dedicated Exadata Infrastructureで作成された表へのデータのロードをサポートします。

DBMS_CLOUDで提供される次のPL/SQLプロシージャを使用して、様々なファイル・フォーマットからデータをロードできます:
  • クラウドのテキスト・ファイル(DBMS_CLOUD.COPY_DATAプロシージャを使用)
  • クラウドのJSONファイル(DBMS_CLOUD.COPY_TEXTプロシージャを使用)
ファイルからデータをロードする前に、次のことを確認してください:
  • ソース・ファイルは、クライアント・コンピュータでローカル・ファイルとして使用可能な場合もあれば、Oracle Cloud Infrastructure Object Storageなどのクラウドベースのオブジェクト・ストアにアップロードして、データのロードを試行するデータベース・ユーザーがそれにアクセスできるようにする場合もあります。
  • クラウド・オブジェクト・ストレージ資格証明は、DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して格納されます。詳細は、資格証明の作成を参照してください。

パッケージDBMS_CLOUDは、次のクラウド・サービスのファイルからのロードをサポートしています: Oracle Cloud Infrastructure Object StorageOracle Cloud Infrastructure Object Storage ClassicAzure Blob StorageおよびAmazon S3

資格証明の作成

DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用してクラウド・オブジェクト・ストレージ資格証明を格納する方法について学習します。

SQL*Plus、SQL Developer、データベース・アクション(WebベースのSQL Developerツール)などの任意のデータベース・ツールを使用して、DBMS_CLOUD.CREATE_CREDENTIALプロシージャを実行します。たとえば次のようにします。
BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@oracle.com',
    password => 'password'
  );
END;
/

usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります:

  • Oracle Cloud Infrastructure Object Storage:usernameはOracle Cloud Infrastructureのユーザー名で、passwordはOracle Cloud Infrastructureの認証トークンです。認証トークンの作業を参照してください。

  • Oracle Cloud Infrastructure Object Storage Classic: usernameはOracle Cloud Infrastructure Classicのユーザー名であり、passwordはOracle Cloud Infrastructure Classicパスワードです。

この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。オブジェクト・ストアの資格証明を変更しないかぎり、このステップが必要なのは1回のみです。資格証明を格納した後は、すべてのデータ・ロードで同じ資格証明名を使用できます。

テキスト・ファイルからのデータのロード

DBMS_CLOUD.COPY_DATAプロシージャを使用してクラウドのテキスト・ファイルからAutonomous Databaseにデータをロードする方法について学習します。

この例のソース・ファイルchannels.txtには、次のデータが含まれています:

S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
  1. DBMS_CREDENTIAL.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。詳細は、資格証明の作成を参照してください。
  2. データを含める表を作成します。次に例を示します。
    CREATE TABLE CHANNELS
       (channel_id CHAR(1),
        channel_desc VARCHAR2(20),
        channel_class VARCHAR2(20)
       );
    /
  3. DBMS_CLOUD.COPY_DATAプロシージャを使用して、データを表にロードします。次に例を示します。
    BEGIN
     DBMS_CLOUD.COPY_DATA(
        table_name =>'CHANNELS',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/channels.txt',
        format => json_object('delimiter' value ',')
     );
    END;
    /
    

    パラメータは次のとおりです:

    • table_name: ターゲット表の名前です。

    • credential_name: 前のステップで作成された資格証明の名前です。

    • file_uri_list: ロードするソース・ファイルのカンマ区切りリストです。

      この例では、file_uri_listは、us-phoenix-1リージョンにあるmybucketバケット内のchannels.txtファイルを指定するOracle Cloud Infrastructure Swift URIです。(idthydc0kinrは、バケットが存在するオブジェクト・ストレージ・ネームスペースです。)サポートされているURIフォーマットの詳細は、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

    • format: ソース・ファイルのフォーマットを説明するために指定するオプションを定義します。指定できるフォーマット・オプションの詳細は、フォーマット・パラメータを参照してください。

    詳細は、COPY_DATAプロシージャを参照してください。

コレクションへの区切りドキュメントのJSONファイルのロード

DBMS_CLOUD.COPY_DATAプロシージャを使用して、区切りドキュメントのJSONファイルをAutonomous Database内のコレクションにロードする方法について学習します。

この例では、行区切りファイルからJSON値をロードし、JSONファイルmyCollection.jsonを使用します。各値(各行)は、Autonomous Database上のコレクションに単一のドキュメントとしてロードされます。

このようなファイルの例を次に示します。3つの行があり、各行に1つのオブジェクトがあります。これらのオブジェクトはそれぞれ個別のJSONドキュメントとしてロードされます。

{ "name" : "apple", "count": 20 }
{ "name" : "orange", "count": 42 }
{ "name" : "pear", "count": 10 }
プロシージャ:
  1. DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。詳細は、資格証明の作成を参照してください。
  2. DBMS_CLOUD.COPY_DATAプロシージャを使用して、データをコレクションにロードします。次に例を示します。
    BEGIN 
      DBMS_CLOUD.COPY_COLLECTION(
        collection_name =>'fruit',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/fruit_bucket/o/myCollection.json',
        format => json_object('recorddelimiter' value '''\n''')
     );
    END;
    /
    

    パラメータは次のとおりです:

    • collection_name: ターゲット・コレクションの名前です。

    • credential_name: 前のステップで作成された資格証明の名前です。

    • file_uri_list: ロードするソース・ファイルのカンマ区切りリストです。

      この例では、file_uri_listは、us-phoenix-1リージョンにあるmybucketバケット内のmyCollection.jsonファイルを指定するOracle Cloud Infrastructure Swift URIです。サポートされているURIフォーマットの詳細は、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

    • format: ソース・ファイルのフォーマットを説明するために指定するオプションを定義します。JSONデータのロードでは、フォーマット・オプションcharacterset、compression、ignoreblanklines、jsonpath、maxdocsize、recorddelimiter、rejectlimit、unpackarrayがサポートされています。これ以外のフォーマットを指定すると、エラーが発生します。指定できるフォーマット・オプションの詳細は、フォーマット・パラメータを参照してください。

    詳細は、COPY_COLLECTIONプロシージャを参照してください。

コレクションへのJSONドキュメントの配列のロード

DBMS_CLOUD.COPY_COLLECTIONプロシージャを使用して、JSONドキュメントの配列をAutonomous Database内のコレクションにロードする方法について学習します。

この例では、JSONファイルfruit_array.jsonを使用します。次に、ファイルfruit_array.jsonの内容を示します:

[{"name" : "apple", "count": 20 },
 {"name" : "orange", "count": 42 },
 {"name" : "pear", "count": 10 }]
プロシージャ:
  1. DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。詳細は、資格証明の作成を参照してください。
  2. DBMS_CLOUD.COPY_DATAプロシージャを使用して、データをコレクションにロードします。次に例を示します。
    BEGIN 
      DBMS_CLOUD.COPY_COLLECTION(    
        collection_name => 'fruits',    
        credential_name => 'DEF_CRED_NAME',    
        file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/json/o/fruit_array.json',
        format => '{"recorddelimiter" : "0x''01''", "unpackarrays" : "TRUE", "maxdocsize" : "10240000"}'
      );
    END;
    /

    この例では、ファイル全体を占める単一のJSON値をロードします。そのため、レコード・デリミタを指定する必要はありません。レコード・デリミタがないことを示すために、入力ファイル内に出現しない文字を使用できます。たとえば、値"0x''01''"は、この文字がJSONテキスト内に直接出現しないため、使用できます。

    フォーマット値のunpackarraysパラメータがTRUEに設定されている場合、ドキュメントの配列は、配列全体としてではなく個々のドキュメントとしてロードされます。ただし、配列要素の解凍は単一レベルに制限されます。ドキュメント内にネストされた配列がある場合、これらの配列は解凍されません。

    パラメータは次のとおりです:

    • collection_name: ターゲット・コレクションの名前です。

    • credential_name: 前のステップで作成された資格証明の名前です。

    • file_uri_list: ロードするソース・ファイルのカンマ区切りリストです。

      この例では、file_uri_listは、us-phoenix-1リージョンにあるmybucketバケット内のmyCollection.jsonファイルを指定するOracle Cloud Infrastructure Swift URIです。サポートされているURIフォーマットの詳細は、クラウド・オブジェクト・ストレージのURIフォーマットを参照してください。

    • format: ソース・ファイルのフォーマットを説明するために指定するオプションを定義します。JSONデータのロードでは、フォーマット・オプションcharacterset、compression、ignoreblanklines、jsonpath、maxdocsize、recorddelimiter、rejectlimit、unpackarrayがサポートされています。これ以外のフォーマットを指定すると、エラーが発生します。指定できるフォーマット・オプションの詳細は、フォーマット・パラメータを参照してください。

    DBMS_CLOUD.COPY_COLLECTIONでフォーマット・オプションunpackarraysを使用してfruit_array.jsonをロードすると、プロシージャによってソース内の配列値が認識されます。そのため、デフォルトのようにデータが単一のドキュメントとしてロードされるのではなく、配列内の各値を単一のドキュメントとしてデータがコレクションfruitsにロードされます。

    詳細は、COPY_COLLECTIONプロシージャを参照してください。

既存の表へのJSONデータのコピー

DBMS_CLOUD.COPY_DATAを使用して、クラウド内のJSONデータを表にロードします。

この例のソース・ファイルはJSONデータ・ファイルです。

  1. Store your object store credentials using the procedure DBMS_CLOUD.CREATE_CREDENTIAL. For example:
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。オブジェクト・ストアの資格証明を変更しないかぎり、このステップが必要なのは1回のみです。資格証明を格納した後は、すべてのデータ・ロードで同じ資格証明名を使用できます。

    パラメータの詳細は、CREATE_CREDENTIALプロシージャを参照してください。

  2. DBMS_CLOUD.COPY_DATAプロシージャを使用して、既存の表にJSONデータをロードします。

    たとえば次のようにします。

    CREATE TABLE WEATHER2
        (WEATHER_STATION_ID VARCHAR2(20),
         WEATHER_STATION_NAME VARCHAR2(50));
    / 
    
    BEGIN 
      DBMS_CLOUD.COPY_DATA(
          table_name      => 'WEATHER2',
          credential_name => 'DEF_CRED_NAME',
          file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/jsonfiles*',
          format          =>  JSON_OBJECT('type' value 'json', 'columnpath' value '["$.WEATHER_STATION_ID",
              "$.WEATHER_STATION_NAME"]')
        );
    END;
    / 
    

    パラメータは次のとおりです:

    • table_name: ターゲット表の名前です。

    • credential_name: 前のステップで作成された資格証明の名前です。

    • file_uri_list: ロードするソース・ファイルのカンマ区切りリストです。URIのファイル名にワイルドカードを使用できます。文字"*"は複数の文字を表すワイルドカードとして、文字"?"は1つの文字を表すワイルドカードとして使用できます。

    • format: JSONデータを含むDBMS_CLOUD.COPY_DATAの場合、typejsonです。他のフォーマット値を指定して、JSONソース・ファイルのフォーマットを説明するオプションを定義します。詳細は、DBMS_CLOUDパッケージ形式オプションに関する項を参照してください。

    この例では、namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。

    パラメータの詳細は、COPY_DATAプロシージャを参照してください。

データ・ロードのモニターとトラブルシューティング

PL/SQLパッケージDBMS_CLOUDを使用して実行されたデータ・ロード操作は、表dba_load_operationsおよびuser_load_operationsに記録されます:

  • dba_load_operations: すべてのロード操作が表示されます。

  • user_load_operations: 自分のスキーマのロード操作が表示されます。

これらの表を問い合せると、進行中または完了済のデータ・ロードに関する情報が表示されます。たとえば、TYPE列のWHERE句述語でSELECT文を使用すると、タイプがCOPYのロード操作が表示されます:


SELECT table_name, owner_name, type, status, start_time, update_time, logfile_table, badfile_table 
   FROM user_load_operations WHERE type = 'COPY';

TABLE_NAME OWNER_NAME  TYPE   STATUS     START_TIME                            UPDATE_TIME                          LOGFILE_TABLE   BADFILE_TABLE
---------- ----------- ------- ---------- ---------------------- --------------------- --------------- ------------- ------------- -------------
CHANNELS   SH          COPY   COMPLETED  04-MAR-21 07.38.30.522711000 AM GMT    04-MAR-21 07.38.30.522711000 AM GMT  COPY$1_LOG     COPY$1_BAD

LOGFILE_TABLE列には、ロード操作のログを確認するための問合せを実行できる表の名前が表示されます。たとえば、次の問合せでは、ロード操作のログが表示されます:

select * from COPY$21_LOG;

BADFILE_TABLE列には、ロード中にエラーが発生した行を確認するための問合せを実行できる表の名前が表示されます。たとえば、次の問合せでは、ロード操作で拒否されたレコードが表示されます:

select * from COPY$21_BAD;

ログに示されたエラーと、指定したBADFILE_TABLE表に示された行に応じて、DBMS_CLOUD.COPY_DATAで適切なフォーマット・オプションを指定することにより、エラーを修正できます。

ノート:

LOGFILE_TABLEおよびBADFILE_TABLEの各表は、ロード操作ごとに2日間保存され、自動的に削除されます。

user_load_operations表のクリアの詳細は、DELETE_ALL_OPERATIONSプロシージャを参照してください。

拡張されたスカラー値を表すテキストのJSONオブジェクト

ネイティブ・バイナリJSONデータ(OSON形式)は、SQL型に対応し、JSON標準に含まれないスカラー型(日付など)を追加することで、JSON言語を拡張します。Oracle Databaseは、このような非標準値を含むJSONスカラー値を表すテキストJSONオブジェクトの使用もサポートしています。

このような拡張オブジェクトを含むテキストJSONデータからネイティブ・バイナリJSONデータを作成する場合、オプションで、対応する(ネイティブ・バイナリ) JSONスカラー値に置換できます。

拡張オブジェクトの例は、{"$numberDecimal":31}です。これは、非標準タイプの小数のJSONスカラー値を表し、そのように解釈されると、ネイティブ・バイナリ形式の小数に置き換えられます。

たとえば、JSONデータ型コンストラクタJSONを使用する場合、キーワードEXTENDEDを使用すると、テキスト入力で認識された拡張オブジェクトがネイティブ・バイナリJSONの結果では対応するスカラー値に置き換えられます。キーワードEXTENDEDを含めなければ、このような置換は発生しません。テキストの拡張JSONオブジェクトは、ネイティブ・バイナリ形式のJSONオブジェクトにそのまま変換されるだけです。

逆に、Oracle SQLファンクションjson_serializeを使用してバイナリJSONデータをテキストJSONデータ(VARCHAR2CLOBまたはBLOB)としてシリアライズする場合、キーワードEXTENDEDを使用して、(ネイティブ・バイナリ) JSONスカラー値を対応するテキスト拡張JSONオブジェクトに置き換えることができます。

ノート:

使用するデータベースがOracle Autonomous Databaseの場合、PL/SQLプロシージャDBMS_CLOUD.copy_collectionを使用して、Oracle NoSQL Databaseなどの一般的なNoSQLデータベースによって生成されるようなJSONデータのファイルからJSONドキュメント・コレクションを作成できます。

ejsonをプロシージャのtypeパラメータの値として使用すると、入力ファイルで認識された拡張JSONオブジェクトが、結果のネイティブ・バイナリJSONコレクションでは対応するスカラー値に置き換えられます。逆に、ファンクションjson_serializeをキーワードEXTENDEDとともに使用して、結果のテキストJSONデータの拡張JSONオブジェクトにスカラー値を置き換えることができます。

拡張オブジェクトの主なユース・ケースは次のとおりです:

  • 交換(インポート/エクスポート):

    • 拡張オブジェクトを含む既存のJSONデータを(どこかから)取り込みます。

    • ネイティブ・バイナリJSONデータを、データベースの外部で使用するために、拡張オブジェクトを含むテキストJSONデータとしてシリアライズします。

  • ネイティブ・バイナリJSONデータの検査: 対応する拡張オブジェクトを調べて、保持しているものを確認します。

交換目的の場合は、Oracle NoSQL Databaseなどの一般的なNoSQLデータベースによって生成されたファイルからJSONデータを取り込み、拡張オブジェクトをネイティブ・バイナリJSONスカラーに変換できます。逆に、ネイティブ・バイナリJSONデータをテキスト・データとしてエクスポートし、Oracle固有のスカラーJSON値を対応するテキストの拡張JSONオブジェクトに置き換えることができます。

ヒント :

検査の例では、ネイティブJSONデータをシリアライズした結果として、{"dob" : "2000-01-02T00:00:00"}などのオブジェクトを検討します。"2000-01-02T00:00:00"は、日付型のネイティブ・バイナリ値をシリアライズした結果でしょうか。または、ネイティブ・バイナリ値は単なる文字列でしょうか。キーワードEXTENDEDを指定してjson_serializeを使用するとわかります。

拡張オブジェクト・フィールドのスカラーJSON型へのマッピングは、一般に多対1です。複数の種類の拡張JSONオブジェクトを特定のスカラー値にマップできます。たとえば、拡張JSONオブジェクトの{"$numberDecimal":"31"}{"$numberLong:"31"}は、どちらも値31のJSON言語スカラー型numberとして変換され、これらの各JSONスカラーに対して項目メソッドtype()"number"を返します。

項目メソッドtype()は、対象値のJSON言語スカラー型を(JSON文字列として)報告します。一部のスカラー値は、同じスカラー型であっても内部的に区別できます。これにより、通常、ファンクションjson_serialize (キーワードEXTENDEDを指定)は元の拡張JSONオブジェクトを再構築できます。このようなスカラー値は、その値を実装する様々なSQL型を使用するか、導出元の拡張JSONオブジェクトの種類でタグ付けすることで、内部的に区別されます。

json_serializeが元の拡張JSONオブジェクトを再構築する場合、結果は必ずしも元の結果とテキスト的に同じではありませんが、意味的には常に同等です。たとえば、{"$numberDecimal":"31"}{"$numberDecimal":31}は、フィールド値の型が異なっていても(文字と数値)、意味的に等しくなります。これらは同じ内部値に変換され、それぞれが$numberDecimal拡張オブジェクトから導出されたものとしてタグが付けられます(同じタグ)。ただし、シリアライズすると、どちらの結果{"$numberDecimal":31}になります。Oracleでは常に、最も直接関連する型がフィールド値に使用されます。この場合は、スカラー型numberのJSON言語値31です。

に、使用される様々な型間の対応関係を示します。(1)入力として使用される拡張オブジェクトの型、(2)項目メソッドtype()によって報告される型、(3)内部で使用されるSQL型、(4)ファンクションjson_serializeによる出力として使用される標準のJSON言語型、および(5)キーワードEXTENDEDが指定されている場合のjson_serializeによる拡張オブジェクト出力の型の間でマップします。

表- 拡張JSONオブジェクト型の関係

拡張オブジェクトの型(入力) Oracle JSONスカラー型(type()によるレポート) SQLスカラー型 標準JSONスカラー型(出力) 拡張オブジェクトの型(出力)
$numberDouble (値はJSON数値、数値を表す文字列、または"Infinity""-Infinity""Inf""-Inf""Nan"のいずれかの文字列脚注1) 倍精度浮動小数点 BINARY_DOUBLE

数値

$numberDouble (値はJSON数値、または"Inf""-Inf""Nan"のいずれかの文字列脚注2)
$numberFloat (値は$numberDoubleと同じ) 浮動小数 BINARY_FLOAT

数値

$numberFloat (値は$numberDoubleと同じ)
$numberDoubleと同じ値の$numberDecimal 数値 NUMBER

数値

$numberDoubleと同じ値の$numberDecimal
$numberInt (値は署名付き32ビット整数または数値を表す文字列) 数値 NUMBER

数値

$numberInt (値は$numberDoubleの場合と同じ)
値がJSON数値または数値を表す文字列の$numberLong 数値 NUMBER

数値

$numberDoubleと同じ値の$numberLong

次のいずれかの値を持つ$binary:

  • base-64文字列
  • base64フィールドとsubTypeフィールドを持つオブジェクトで、それぞれの値はbase-64文字列および数値0 (任意のバイナリ)または4 (UUID)

値がbase-64文字の文字列の場合、拡張オブジェクトに$subtypeフィールドを含めることもできます。このフィールドには、値0または4 (1バイト整数(0-255)、または、その整数を表す2文字の16進文字列として表現)を含めることもできます。

binary BLOBまたはRAW

文字列

変換は、SQLファンクションrawtohexを使用した場合と同じです。

次のいずれかが指定されます。
  • $binary (値はbase-64文字列)
  • 入力のsubType値が4 (UUID)の場合、値が32桁の16進文字列の$rawid
$oid (値は24桁の16進文字列) binary RAW(12)

文字列

変換は、SQLファンクションrawtohexを使用した場合と同じです。

$rawid (値は24桁の16進文字列)
$rawhex (値は偶数の16進文字の文字列) binary RAW

文字列

変換は、SQLファンクションrawtohexを使用した場合と同じです。

$binary (値は、=文字で右詰め)
$rawid (値は24または32桁の16進文字列) binary RAW

文字列

変換は、SQLファンクションrawtohexを使用した場合と同じです。

$rawid
値がISO 8601の日付文字列の$oracleDate 日付 DATE

文字列

値がISO 8601の日付文字列の$oracleDate
$oracleTimestamp with value an ISO 8601 timestamp string タイムスタンプ TIMESTAMP

文字列

$oracleTimestamp with value an ISO 8601 timestamp string
$oracleTimestampTZ (値は数値のタイムゾーン・オフセットまたはZを持つISO 8601タイムスタンプ文字列) タイムスタンプ(タイムゾーン付き) TIMESTAMP WITH TIME ZONE

文字列

$oracleTimestampTZ (値は数値のタイムゾーン・オフセットまたはZを持つISO 8601タイムスタンプ文字列)

次のいずれかの値を持つ$date:

  • 1990年1月1日以降の整数のミリ秒カウント
  • ISO 8601タイムスタンプ文字列
  • numberLongフィールドを含むオブジェクト(値は1990年1月1日以降のミリ秒の整数値)
タイムスタンプ(タイムゾーン付き) TIMESTAMP WITH TIME ZONE

文字列

$oracleTimestampTZ (値は数値のタイムゾーン・オフセットまたはZを持つISO 8601タイムスタンプ文字列)
SQLファンクションto_dsintervalに指定されたISO 8601間隔文字列の値を持つ$intervalDaySecond daysecondInterval INTERVAL DAY TO SECOND

文字列

SQLファンクションto_dsintervalに指定されたISO 8601間隔文字列の値を持つ$intervalDaySecond
SQLファンクションto_ymintervalに指定されたISO 8601間隔文字列の値を持つ$intervalYearMonth yearmonthInterval INTERVAL YEAR TO MONTH

文字列

SQLファンクションto_ymintervalに指定されたISO 8601間隔文字列の値を持つ$intervalYearMonth

2つのフィールド:

  • 要素が数値である配列、または文字列"Nan""Inf"および"-Inf"(非数値および無限値を表す)を持つフィールド$vector

  • 文字列値"float32"または"float64"を持つフィールド$vectorElementType。これらはそれぞれ、IEEE 32ビットおよびIEEE 64ビット数に対応しています。

ベクトル VECTOR

数値の配列

2つのフィールド:

  • 要素が数値である配列、または文字列"Nan""Inf"および"-Inf"(非数値および無限値を表す)を持つフィールド$vector

  • 文字列値"float32"または"float64"を持つフィールド$vectorElementType

脚注1 文字列値は大文字と小文字を区別せずに解釈されます。たとえば、"NAN""nan"および"nAn"は同等であり、"INF""inFinity"および"iNf"も同様です。無限に大きい数値("Infinity"または"Inf")および小さい数値("-Infinity"または"-Inf")は、フルワードまたは略語で受け入れられます。

脚注2 出力では、これらの文字列値のみが使用されます。フルワードInfinityまたは大小文字のバリアントは使用されません。