Javaストアドプロシージャによるファイルの読み込み¶
ハンドラーコードを使用してファイルの内容を読み取ることができます。ファイルは、ハンドラーが使用できるSnowflakeのステージである必要があります。たとえば、ファイルを読み取って、ハンドラーで非構造化データを処理する場合があります。
ステージングされたファイルのコンテンツを読み取るには、 SnowflakeFile クラスまたは InputStream クラスのいずれかでメソッドを呼び出すことができます。コンピューティング中、ファイルに動的にアクセスする必要があるときは、これを実行する場合があります。詳細については、このトピック内の SnowflakeFile を使用した動的に指定されたファイルの読み取り または InputStream を使用した動的に指定されたファイルの読み取り をご参照ください。
SnowflakeFile は、次のテーブルで説明されているように、 InputStream では利用できない機能を提供します。
クラス |
入力 |
メモ |
|---|---|---|
|
URL フォーマット:
ファイルは、名前付き内部ステージまたは外部ステージに配置されている必要があります。 |
ファイルサイズなど、追加のファイル属性に簡単にアクセスできます。 |
|
URL フォーマット:
ファイルは、名前付き内部ステージまたは外部ステージに配置されている必要があります。 |
SnowflakeFile を使用した動的に指定されたファイルの読み取り¶
次の例のコードには、 String を受け取り、ファイルの内容を含む String を返す、ハンドラー関数 execute があります。実行時に、Snowflakeはプロシージャの input 変数にある受信ファイルパスからのハンドラーの fileName 変数を初期化します。ハンドラーコードは、 SnowflakeFile インスタンスを使用してファイルを読み取ります。
次の CALL の例にあるコードは、ファイルをポイントするスコープ付きファイル URL を作成します。これは、ステージ自体に権限を付与することなく、ステージングされたファイルへの仮アクセスを許可するエンコードされた URL です。
注釈
所有者権限のストアドプロシージャの場合は、プロシージャの所有者にスコープ付き URLs 以外のファイルへのアクセス権が必要があります。呼び出し元権限のプロシージャの場合は、呼び出し元にスコープが付いていない URLs のファイルへのアクセス権が必要です。いずれの場合も、新しい requireScopedUrl パラメーターに boolean の値を指定して SnowflakeFile.newInstance メソッドを呼び出すハンドラーコードにより、ステージングされたファイルを読み取ることができます。
次の例では、スコープ付き URL が不要であることを指定し、 SnowflakeFile.newInstance を使用します。
InputStream を使用した動的に指定されたファイルの読み取り¶
次の例のコードには、 InputStream を受け取り、ファイルの内容を含む String を返す、ハンドラー関数 execute があります。実行時に、Snowflakeはプロシージャの input 引数にある受信ファイルパスからのハンドラーの stream 変数を初期化します。ハンドラーコードは、 InputStream を使用してファイルを読み取ります。
次の CALL の例にあるコードは、ファイルをポイントするスコープ付きファイル URL を作成します。これは、ステージ自体に権限を付与することなく、ステージングされたファイルへの仮アクセスを許可するエンコードされた URL です。