Java 저장 프로시저를 사용하여 파일 읽기¶
처리기 코드로 파일의 내용을 읽을 수 있습니다. 파일은 처리기에 사용할 수 있는 Snowflake 스테이지에 있어야 합니다. 예를 들어 처리기에서 비정형 데이터를 처리하기 위해 파일을 읽을 수 있습니다.
스테이징된 파일의 내용을 읽기 위해, 처리기는 SnowflakeFile 클래스 또는 InputStream 클래스의 메서드를 호출할 수 있습니다. 계산 중에 파일에 동적으로 액세스해야 하는 경우 이 작업을 수행할 수 있습니다. 자세한 내용은 이 항목의 SnowflakeFile 을 사용하여 동적으로 지정된 파일 읽기 또는 InputStream 을 사용하여 동적으로 지정된 파일 읽기 섹션을 참조하십시오.
SnowflakeFile 은 다음 표에 설명된 것처럼 InputStream 과 함께 사용할 수 없는 기능을 제공합니다.
클래스 |
입력 |
참고 |
|---|---|---|
|
URL 형식:
파일은 명명된 내부 스테이지 또는 외부 스테이지에 있어야 합니다. |
파일 크기와 같은 추가 파일 특성에 쉽게 액세스할 수 있습니다. |
|
URL 형식:
파일은 명명된 내부 스테이지 또는 외부 스테이지에 있어야 합니다. |
SnowflakeFile 을 사용하여 동적으로 지정된 파일 읽기¶
다음 예의 코드에는 String 을 받아 파일의 내용과 함께 String 을 반환하는 처리기 함수 execute 가 있습니다. 런타임에 Snowflake는 프로시저의 input 변수에 있는 수신 파일 경로에서 처리기의 fileName 변수를 초기화합니다. 처리기 코드는 SnowflakeFile 인스턴스를 사용하여 파일을 읽습니다.
다음 CALL 예제의 코드는 범위 지정된 파일을 가리키는 URL을 생성합니다. 이것은 스테이지 자체에 권한을 부여하지 않고 스테이징된 파일에 대한 임시 액세스를 허용하는 인코딩된 URL입니다.
참고
소유자의 권한 저장 프로시저의 경우 프로시저의 소유자는 범위가 지정된 URL이 아닌 모든 파일에 액세스할 수 있어야 합니다. 호출자의 권한 프로시저의 경우 호출자는 범위가 지정된 URL이 아닌 모든 파일에 액세스할 수 있어야 합니다. 어느 경우든 처리기 코드가 새 requireScopedUrl 매개 변수에 대한 boolean 값으로 SnowflakeFile.newInstance 메서드를 호출하도록 하여 스테이징된 파일을 읽을 수 있습니다.
다음 예에서는 범위가 지정된 URL이 필요하지 않음을 지정하면서 SnowflakeFile.newInstance 를 사용합니다.
InputStream 을 사용하여 동적으로 지정된 파일 읽기¶
다음 예의 코드에는 InputStream 을 받아 파일의 내용과 함께 String 을 반환하는 처리기 함수 execute 가 있습니다. 런타임에 Snowflake는 프로시저의 input 인자에 있는 수신 파일 경로에서 처리기의 stream 변수를 초기화합니다. 처리기 코드는 InputStream 을 사용하여 파일을 읽습니다.
다음 CALL 예제의 코드는 범위 지정된 파일을 가리키는 URL을 생성합니다. 이것은 스테이지 자체에 권한을 부여하지 않고 스테이징된 파일에 대한 임시 액세스를 허용하는 인코딩된 URL입니다.