JDBC 드라이버 API 지원

Snowflake JDBC 드라이버는 JDBC API 버전 1.0의 핵심적인 JDBC 기능을 지원하는 JDBC 타입 4 드라이버입니다. 전체 API 참조는 Java SE 기술 문서 를 참조하십시오. 최신 API 버전에서 제공되는 메서드를 사용해 볼 수 있지만, Snowflake는 해당 메서드의 지원을 보장하지 않습니다.

Snowflake JDBC 드라이버를 사용하려면 Java LTS(장기 지원) 버전 1.8 이상이 필요합니다. 드라이버에는 java.sql 패키지가 필요하며, 이 패키지는 Java Standard Edition(SE) 및 Enterprise Edition(EE)에 포함되어 있습니다. 2019년 8월 현재 java.sql 패키지 설명서는 https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html에서 제공됩니다.

드라이버는 데이터베이스 서버에 연결하기 위해 JDBC를 지원하는 대부분의 클라이언트 도구/애플리케이션과 함께 사용할 수 있습니다.

이 항목에서는 전체 JDBC API에 대한 설명을 제공하지 않습니다. 이 항목에서 다루는 내용은 다음과 같습니다.

  • JDBC API에서 지원되는 인터페이스와 각 인터페이스 내에서 지원되는 메서드를 나열합니다.

  • Snowflake가 JDBC API 표준을 확장한 영역을 문서화합니다.

  • JDBC API 표준이 모호하고 Snowflake 구현에서 기타 시스템과 약간 다르게 동작하는 영역을 문서화합니다.

일반적으로 메서드가 호출된 후 실패하면 메서드에서 예외(예: SQLException)가 발생합니다.

지원되는 JDBC 인터페이스는 알파벳순으로 나열되며 해당 Snowflake 확장 클래스(해당되는 경우)와 함께 제공됩니다.

이 항목의 내용:

오브젝트: CallableStatement

CallableStatement는 저장 프로시저를 실행하기 위해 사용됩니다.

메서드

메서드 이름

참고

지원되는 메서드

getBigDecimal(int, int)

getBoolean(int)

getByte(int)

getBytes(int)

getDate(int)

getDouble(int)

getFloat(int)

getInt(int)

getLong(int)

getObject(int)

getShort(int)

getString(int)

getTime(int)

getTimestamp(int)

registerOutParameter(int, int, int)

registerOutParameter(int, int)

wasNull()

지원되지 않는 메서드

없습니다.

Snowflake 고유 동작

없습니다.

인터페이스: SnowflakeCallableStatement

SnowflakeCallableStatement 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. Connection.prepareCall() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 CallableStatement 타입의 오브젝트를 생성하면 실제로 JDBC CallableStatement 인터페이스 및 SnowflakeCallableStatement 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakeCallableStatement래핑을 해제 합니다.

추가 메서드

메서드 이름

설명

getQueryID()

CallableStatement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다.

getQueryID()
목적

이 메서드는 이 CallableStatement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다. 호출 가능한 문을 사용하여 아직 쿼리가 실행되지 않은 경우 메서드는 null을 반환합니다.

인자

없습니다.

반환

이 메서드는 UUID를 포함한 문자열로 ID를 반환합니다. UUIDs에 대한 정보는 SQL 함수 UUID_STRING 의 설명에 포함됩니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

오브젝트: Connection

Connection 오브젝트는 데이터베이스 서버로의 연결을 나타냅니다. 연결 오브젝트를 사용하면 특정 데이터베이스 서버에 연결할 수 있을 뿐만 아니라 Statement 문을 실행하는 데 사용할 수 있는 SQL 오브젝트를 생성할 수 있습니다.

메서드

메서드 이름

참고

지원되는 메서드

abort()

clearWarnings()

close()

Snowflake 고유 동작입니다(아래 참조).

commit()

createStatement()

createStatement(int, int)

createStatement(int, int, int)

getAutoCommit()

getCatalog()

getClientInfo()

getHoldability()

getMetaData()

Snowflake 고유 동작입니다(아래 참조).

getSchema()

getTransactionIsolation()

getTypeMap()

getWarnings()

isClosed()

isReadOnly()

isValid()

nativeSQL(String)

prepareCall(String)

prepareCall(String, boolean)

prepareCall(String, int, int)

prepareCall(String, int, int, int)

prepareStatement(String)

prepareStatement(String, int)

prepareStatement(String, int[])

prepareStatement(String, String[])

prepareStatement(String, int, int)

prepareStatement(String, int, int, int)

Snowflake 고유 동작(아래 참조)

prepareStatement(String, boolean)

setAutoCommit(boolean)

setCatalog(String)

setClientInfo(String, String)

이 메서드를 호출하면 SQLClientInfoException 이 발생합니다.

setClientInfo(Properties)

이 메서드를 호출하면 SQLClientInfoException 이 발생합니다.

setReadOnly(boolean)

setSchema(String)

지원되지 않는 메서드

rollback()

setTransactionIsolation(int)

Snowflake 고유 동작

  • close()

    오브젝트를 닫습니다. 오브젝트가 닫힌 후, 닫힌 오브젝트에 대한 거의 모든 메서드를 호출하면 SQLException 이 발생합니다. 이미 닫힌 오브젝트에서 close 를 호출하면 오류가 발생하지 않지만 예외가 발생합니다.

  • getMetaData()

    JDBC 드라이버 및 Snowflake에 대한 메타데이터를 가져오도록 하겠습니다. 예를 들어, 트랙잭션의 지원 여부를 확인할 수 있습니다.

    반환된 값에서 호출할 수 있는 메서드에 대한 자세한 내용은 오브젝트: DatabaseMetaData 를 참조하십시오.

  • prepareStatement(String sql)

    이 메서드는 SQL 문을 실행하기 위해 사용할 수 있는 preparedStatement 오브젝트를 반환합니다. preparedStatement 오브젝트의 execute() 메서드를 호출하여 문을 실행할 수 있습니다. 문은 그대로 실행하거나 문에 값을 바인딩한 후 실행할 수 있습니다.

    참고

    일부 시스템에서는 문이 준비된 후에 해당 문을 재컴파일하지 않고 반복해서 실행할 수 있습니다. 한 번 준비한 후 반복적으로 실행하면 시간과 리소스를 약간 절약할 수 있습니다.

    Snowflake에서 prepareStatement()는 코드를 실제로 컴파일하지 않습니다. 대신, PreparedStatement.execute(), PreparedStatement.executeQuery()PreparedStatement.executeUpdate() 가 문을 컴파일 및 실행합니다. 그러므로 실행하기 전 문을 준비하는 것은 단순히 Statement.execute() 를 사용하는 것에 비해 리소스가 절약되지 않습니다.

  • prepareCall(String sql)

  • prepareCall(String sql, boolean)

  • prepareCall(String sql, int, int)

  • prepareCall(String sql, int, int, int)

    대부분의 JDBC 구현에서와 같이, prepareCall 메서드를 사용하여 매개 변수를 저장 프로시저에 바인딩할 수 있습니다. 예를 들어, 다음이 지원됩니다.

    CallableStatement stmt = testConnection.prepareCall("call read_result_set(?,?) ");
    
    Copy

    그러나 Snowflake JDBC 드라이버의 prepareCall 메서드는 저장 프로시저의 반환 값 바인딩을 지원하는 ? = 구문을 지원하지 않습니다. 예를 들어, 다음은 지원되지 않습니다.

    CallableStatement stmt = testConnection.prepareCall("? = call read_result_set() ");  -- INVALID
    
    Copy

인터페이스: SnowflakeConnection

SnowflakeConnection 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. DriverManager.getConnection() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 연결 타입의 오브젝트를 생성하면 실제로 JDBC 연결 인터페이스 및 SnowflakeConnection 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakeConnection래핑을 해제 합니다.

추가 메서드

이러한 메서드는 JDBC Connection 인터페이스에서 지원하는 메서드에 추가됩니다.

메서드 이름

설명

createResultSet(String)

비동기식으로 실행된 SQL 문의 쿼리 ID가 제공되면 쿼리 결과를 검색하여 ResultSet 오브젝트에 반환합니다.

downloadStream(String, String, boolean)

지정된 내부 스테이지에서 파일을 다운로드하고 InputStream을 반환합니다.

getSessionID()

현재 세션의 세션 ID를 가져옵니다.

prepareStatement(String, Boolean)

오버로드된 prepareStatement() 메서드입니다(자세한 내용은 아래 참조).

uploadStream(String, String, InputStream, String, boolean)

스트림에서 데이터를 압축하고 내부 스테이지에서 지정된 경로와 파일 이름으로 업로드합니다.

public ResultSet createResultSet(String queryID)
목적

비동기식으로 실행된 SQL 문 의 queryID가 제공되면 쿼리 결과를 검색하여 ResultSet 오브젝트에 반환합니다.

이 메서드는 일반적으로 SQL 문의 종료된 후 24시간 이내에 호출됩니다.

인자

queryID: 결과를 살펴볼 쿼리의 쿼리 ID입니다.

반환

ResultSet입니다. 쿼리 실행이 아직 완료되지 않은 경우 서버는 《빈》 ResultSet을 반환합니다. 사용자는 resultSet.unwrap(SnowflakeResultSet.class).getStatus() 를 호출하여 데이터를 사용할 수 있는 시간을 확인할 수 있습니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 Connection 오브젝트의 래핑을 해제 해야 합니다.

ResultSet resultSet;
resultSet = connection.unwrap(SnowflakeConnection.class).createResultSet(queryID);
Copy

이 메서드의 호출을 포함하는 보다 광범위한 예시는 비동기 쿼리의 예 를 참조하십시오.

public InputStream downloadStream(String stageName, String sourceFileName, boolean decompress)
목적

이 메서드는 지정된 내부 스테이지에서 파일을 다운로드하고 입력 스트림을 반환합니다.

인자

stageName: 스테이지 이름입니다.

sourceFileName: 스테이지의 파일 경로입니다.

decompress: 파일이 압축된 경우 true입니다.

반환

이 메서드는 InputStream을 반환합니다.

Throw

SQL 오류가 발생하면 이 메서드는 SQLException을 throw합니다.

부분적인 예시는 내부 스테이지에서 스트림으로 직접 데이터 파일 다운로드 를 참조하십시오.

public String getSessionID()
목적

이 메서드는 현재 세션의 세션 ID를 반환합니다.

인자

없음

반환

세션 ID를 문자열로 반환합니다.

Throw

예를 들어 연결이 닫힌 경우와 같이 SQL 오류가 발생하면 이 메서드는 SQLException를 throw합니다.

사용법 노트

세션 ID는 연결이 열려 있는 동안 변경되지 않으므로 세션 ID는 성능 향상을 위해 (매번 서버에서 검색하지 않고) 로컬로 캐시됩니다.

public prepareStatement(String sql, Boolean skipParsing)

이 메서드는 더 이상 사용되지 않습니다. skipParsing 매개 변수는 더 이상 메서드의 동작에 영향을 주지 않으며, 이 메서드는 skipParsing 매개 변수의 설정에 관계없이 prepareStatement(String sql) 메서드와 동일하게 동작합니다.

새로운 코드에서는 prepareStatement(String sql) 메서드를 사용할 수 있습니다.

편리한 경우 인자 2개를 사용하는 이 메서드의 버전을 사용하는 기존 코드를 인자를 1개 사용하는 prepareStatement(String sql) 메서드를 사용하도록 업데이트해야 합니다.

public void uploadStream(String stageName, String destPrefix, InputStream inputStream, String destFileName, boolean compressData)
목적

이 메서드는 스트림에서 데이터를 압축하고 내부 스테이지 위치에 업로드합니다. 데이터는 파일 1개로 업로드됩니다. 이 메서드에서는 분할이 수행되지 않습니다.

인자

stageName: 스테이지 이름(예: ~ 또는 테이블 이름 또는 스테이지 이름)입니다.

destPrefix: 스테이지에서 데이터를 업로드해야 하는 경로/접두사입니다.

inputStream: 데이터를 업로드할 입력 스트림입니다.

destFileName: 사용할 대상 파일 이름입니다.

compressData: 스트림을 업로드하기 전에 데이터를 압축하거나 압축하지 않습니다.

반환

없습니다.

Throw

이 메서드는 스테이지의 스트림에서 데이터를 압축하고 삽입하지 못하는 경우 java.sql.SQLException 을 throw합니다.

참고

호출자는 메서드가 호출된 후 inputStream 을 해제할 책임이 있습니다.

부분적인 예시는 스트림에서 내부 스테이지로 직접 데이터 파일 업로드 를 참조하십시오.

오브젝트: DatabaseMetaData

DatabaseMetaData 클래스는 데이터베이스 서버(이 경우 Snowflake)가 지원하는 기능에 대한 정보를 제공합니다.

메서드

메서드 이름

참고

지원되는 메서드

allProceduresAreCallable()

allTablesAreSelectable()

dataDefinitionCausesTransactionCommit()

dataDefinitionIgnoredInTransactions()

doesMaxRowSizeIncludeBlobs()

getCatalogs()

getCatalogSeparator()

getCatalogTerm()

getColumnPrivileges(String, String, String, String)

columnNamePattern 인자에 대한 와일드카드 를 지원합니다. catalog, schemaPattern, tableNamePatterncolumnNamePattern 인자에서 null 을 지원합니다. 이 메서드에 대한 자세한 내용은 Snowflake 고유 동작 을 참조하십시오.

getColumns(String, String, String, String)

schemaPattern, tableNamePatterncolumnNamePattern 인자에 대한 와일드카드 를 지원합니다. catalog, schemaPattern, tableNamePatterncolumnNamePattern 인자에서 null 을 지원합니다.

getCrossReference(String, String, String, String, String, String)

parentCatalog, parentSchema, parentTable, foreignCatalog, foreignSchemaforeignTable 인자에서 null 을 지원합니다.

getDatabaseProductName()

getDatabaseProductVersion()

getDefaultTransactionIsolation()

getDriverMajorVersion()

getDriverMinorVersion()

getDriverName()

getDriverVersion()

getExportedKeys(String, String, String)

catalog, schematable 인자에서 null 을 지원합니다.

getExtraNameCharacters()

getFunctionColumns()

schemaPattern, functionNamePatterncolumnNamePattern 인자에 대한 와일드카드 를 지원합니다. columnNamePattern 인자에서 null 을 지원합니다.

getFunctions(String, String, String)

schemaPatternfunctionNamePattern 인자에 대한 와일드카드 를 지원합니다. schemaPatternfunctionNamePattern 인자에서 null 을 지원합니다.

getIdentifierQuoteString()

getImportedKeys(String, String, String)

catalog, schematable 인자에서 null 을 지원합니다.

getIndexInfo(String, String, String, boolean, boolean)

getMaxBinaryLiteralLength()

getMaxCatalogNameLength()

getMaxCharLiteralLength()

getMaxColumnNameLength()

getMaxColumnsInGroupBy()

getMaxColumnsInIndex()

getMaxColumnsInOrderBy()

getMaxColumnsInSelect()

getMaxColumnsInTable()

getMaxConnections()

getMaxCursorNameLength()

getMaxIndexLength()

getMaxProcedureNameLength()

getMaxRowSize()

getMaxSchemaNameLength()

getMaxStatementLength()

getMaxStatements()

getMaxTableNameLength()

getMaxTablesInSelect()

getMaxUserNameLength()

getNumericFunctions()

getPrimaryKeys(String, String, String)

catalog, schematable 인자에서 null 을 지원합니다.

getProcedureColumns(String, String, String, String)

schemaPattern, procedureNamePatterncolumnNamePattern 인자에 대한 와일드카드 를 지원합니다. columnNamePattern 인자에서 null 을 지원합니다.

getProcedures(String, String, String)

schemaPatternprocedureNamePattern 인자에 대한 와일드카드 를 지원합니다. columnNamePattern 인자에서 null 을 지원합니다.

getProcedureTerm()

getSchemas()

getSchemas(String, String)

schemaPattern 인자에 대한 와일드카드 를 지원합니다. catalogNameschemaPattern 인자에서 null 을 지원합니다.

getSchemaTerm()

getSearchStringEscape()

getSQLKeywords()

getSQLStateType()

getStreams(String, String, String)

orignalSchemaPatternstreamName 인자에 대한 와일드카드 를 지원합니다. originalCatalog, originalSchemaPatternstreamName 인자에서 null 을 지원합니다. 이 메서드에 대한 자세한 내용은 Snowflake 고유 동작 을 참조하십시오.

getStringFunctions()

getSystemFunctions()

getTablePrivileges(String, String, String)

schemaPatterntableNamePattern 인자에 대한 와일드카드 를 지원합니다. catalogschemaPattern 인자에서 null 을 지원합니다.

getTables(String, String, String, String[])

schemaPatterntableNamePattern 인자에 대한 와일드카드 를 지원합니다. catalog, schemaPattern, tableNamePatterntypes 인자에서 null 을 지원합니다.

getTableTypes()

getTimeDateFunctions()

getTypeInfo()

getURL()

getUserName()

isCatalogAtStart()

isReadOnly()

nullPlusNonNullIsNull()

nullsAreSortedAtEnd()

nullsAreSortedAtStart()

nullsAreSortedHigh()

nullsAreSortedLow()

storesLowerCaseIdentifiers()

storesLowerCaseQuotedIdentifiers()

storesMixedCaseIdentifiers()

storesMixedCaseQuotedIdentifiers()

storesUpperCaseIdentifiers()

storesUpperCaseQuotedIdentifiers()

supportsAlterTableWithAddColumn()

supportsAlterTableWithDropColumn()

supportsANSI92EntryLevelSQL()

supportsANSI92FullSQL()

supportsANSI92IntermediateSQL()

supportsCatalogsInDataManipulation()

supportsCatalogsInIndexDefinitions()

supportsCatalogsInPrivilegeDefinitions()

supportsCatalogsInProcedureCalls()

supportsCatalogsInTableDefinitions()

supportsColumnAliasing()

supportsConvert()

supportsConvert(int, int)

supportsCoreSQLGrammar()

supportsCorrelatedSubqueries()

supportsDataDefinitionAndDataManipulationTransactions()

supportsDataManipulationTransactionsOnly()

supportsDifferentTableCorrelationNames()

supportsExpressionsInOrderBy()

supportsExtendedSQLGrammar()

supportsFullOuterJoins()

supportsGroupBy()

supportsGroupByBeyondSelect()

supportsGroupByUnrelated()

supportsIntegrityEnhancementFacility()

supportsLikeEscapeClause()

supportsLimitedOuterJoins()

supportsMinimumSQLGrammar()

supportsMixedCaseIdentifiers()

supportsMixedCaseQuotedIdentifiers()

supportsMultipleResultSets()

supportsMultipleTransactions()

supportsNonNullableColumns()

supportsOpenCursorsAcrossCommit()

supportsOpenCursorsAcrossRollback()

supportsOpenStatementsAcrossCommit()

supportsOpenStatementsAcrossRollback()

supportsOrderByUnrelated()

supportsOuterJoins()

supportsPositionedDelete()

supportsPositionedUpdate()

supportsSchemasInDataManipulation()

supportsSchemasInIndexDefinitions()

supportsSchemasInPrivilegeDefinitions()

supportsSchemasInProcedureCalls()

supportsSchemasInTableDefinitions()

supportsSelectForUpdate()

supportsStoredProcedures()

supportsSubqueriesInComparisons()

supportsSubqueriesInExists()

supportsSubqueriesInIns()

supportsSubqueriesInQuantifieds()

supportsTableCorrelationNames()

supportsTransactionIsolationLevel(int)

supportsTransactions()

supportsUnion()

supportsUnionAll()

usesLocalFilePerTable()

usesLocalFiles()

지원되지 않는 메서드

getBestRowIdentifier(String, String, String, int, boolean)

getVersionColumns(String, String, String)

Snowflake 고유 동작

public ResultSet getColumnPrivileges(String, String, String, String)

Snowflake는 열 수준 권한을 지원하지 않으므로 이 메서드는 항상 빈 세트를 반환합니다.

public ResultSet getStreams(String, String, String)
목적

이 메서드는 지정된 데이터베이스와 스키마 내에 포함된 스트림 에 대한 정보를 반환합니다.

인자
  • originalCatalog: 데이터베이스의 이름입니다.

  • orignalSchemaPattern: 스키마를 식별하는 패턴입니다(와일드카드 를 지원함).

  • streamName: 스트림의 이름입니다(와일드카드 를 지원함).

반환

이 메서드는 다음 열을 포함하는 각 행과 함께, 각 스트림의 행을 포함하는 ResultSet 를 반환합니다.

  • name: 스트림의 이름입니다.

  • database_name: 스트림을 포함하는 스키마의 데이터베이스 이름입니다.

    데이터베이스 오브젝트(예: 스트림)는 스키마에 포함되며, 스키마는 데이터베이스에 포함됩니다.

  • schema_name: 스트림을 포함하는 스키마의 이름입니다.

  • owner: 스트림을 소유한 역할입니다.

  • comment: 스트림과 연결된 설명입니다.

  • table_name: 스트림에서 자신의 DML 업데이트가 추적되는 테이블의 이름입니다.

  • source_type: 스트림의 원본 오브젝트입니다. 가능한 값은 다음과 같습니다.

    • table

    • view

    • directory table

    • external table

  • base_tables: 뷰의 기본 테이블입니다. 이 열은 뷰의 스트림에만 적용됩니다.

  • type: 스트림의 유형입니다. 현재, 함수는 항상 DELTA 를 반환합니다.

  • stale: stale_after 시간이 지나기 전에 스트림을 마지막으로 읽었는지 여부입니다. TRUE 인 경우 스트림이 부실할 수 있습니다.

    부실한 스트림은 읽을 수 없습니다. 스트림을 다시 만들어 스트림에서 읽기를 재개할 수 있습니다. 스트림이 부실해지는 것을 방지하려면 stale_after 시간이 지나기 전에 스트림을 사용해야 합니다.

  • mode: 스트림의 유형입니다. 가능한 값은 다음과 같습니다.

    • APPEND_ONLY: 스트림이 Append-only 스트림임을 나타냅니다.

    • INSERT_ONLY: 스트림이 삽입된 행에 대한 정보만 반환함을 나타냅니다. 이 값은 외부 테이블의 스트림에만 적용됩니다.

    • DEFAULT: 스트림이 테이블에 있음을 나타냅니다.

Throw

SQL 오류가 발생하면 이 메서드는 SQLException 을 발생시킵니다.

null 매개 변수 지원

일부 DatabaseMetaData 메서드는 데이터베이스 오브젝트 이름(예: 테이블/카탈로그 이름)에 대한 null 값을 허용합니다. 기본적으로 null 값은 메서드에서 해당 인자를 필터링하지 않음을 의미합니다. 예를 들어, schemaPattern 인자에 대해 null 값을 getColumns() 에 전달하면 getColumns() 는 모든 스키마에 대한 값을 반환합니다.

이러한 방법 중 일부의 경우 null 인자에 대한 기본 동작은 다음 매개 변수 로 재정의할 수 있습니다.

데이터베이스 오브젝트 이름에서 와일드카드 지원

일부 DatabaseMetaData 메서드는 테이블/카탈로그 이름과 같은 데이터베이스 오브젝트 이름에서 패턴 일치 와일드카드를 지원합니다. 지원되는 와일드카드 문자는 다음과 같습니다.

  • %: 0개 이상의 문자로 구성된 모든 문자열과 일치합니다.

  • _: 1개 문자와 일치합니다.

다음 예시는 지정된 데이터베이스(TEMPORARYDB1) 및 스키마(TEMPORARYSCHEMA1)의 모든 테이블과 모든 열 이름을 가져오기 위해 getColumns() 메서드에 전달할 값을 보여줍니다.

getColumns( connection,
    "TEMPORARYDB1",      // Database name.
    "TEMPORARYSCHEMA1",  // Schema name.
    "%",                 // All table names.
    "%"                  // All column names.
    );
Copy

테이블 이름 등의 데이터베이스 오브젝트 이름에는 예를 들어 SHIPPING_ADDRESSES 와 같이 밑줄이 포함되는 것이 일반적입니다. 밑줄을 이스케이프하지 않고 SHIPPING_ADDRESSES 를 검색하면 이름이 SHIPPING_ADDRESSES 인 테이블뿐만 아니라 SHIPPING2ADDRESSES 와 같은 테이블도 찾을 수 있습니다. SHIPPING2ADDRESSES 를 제외하고 SHIPPING_ADDRESSES 를 검색하려면 와일드카드 문자를 이스케이프하여 리터럴로 처리하도록 지정해야 합니다. 문자를 이스케이프하려면 백슬래시를 앞에 추가합니다.

백슬래시 문자 자체를 리터럴 문자로 사용하려면 이스케이프 처리해야 합니다. 예를 들어 밑줄, 앰퍼샌드 및 백슬래시가 와일드카드 문자나 이스케이프 문자가 아닌 이름의 리터럴 부분에 해당하는 이름이 T_&\ 인 테이블을 검색하려면 다음과 유사하게 메서드를 호출해야 합니다.

getColumns(
    connection, "TEMPORARYDB1", "TEMPORARYSCHEMA1", "T\\_\\\\", "%" // All column names.
    );
Copy

Java 컴파일러는 백슬래시가 이스케이프될 것으로 예상하므로 위의 각 백슬래시는 추가 시간을 이스케이프해야 합니다.

Java sees...............: T\\_\\%\\\\
SQL sees................: T\_\%\\
The actual table name is: T_%\
Copy

오브젝트: Driver

드라이버는 데이터베이스에 연결하고 드라이버 자체에 대한 정보를 가져올 수 있는 방법을 제공합니다.

메서드

메서드 이름

참고

지원되는 메서드

acceptsURL(String)

connect(String, Properties)

getMajorVersion()

getMinorVersion()

getPropertyInfo(String, Properties)

isDisableIncidents()

jdbcCompliant()

setDisableIncidents()

Snowflake 고유 동작

없습니다.

다음 코드 조각은 속성 정보를 가져오는 프로그램의 일부를 보여줍니다.

  // Demonstrate the Driver.getPropertyInfo() method.
  public static void do_the_real_work(String connectionString) throws Exception {
    Properties properties = new Properties();
    Driver driver = DriverManager.getDriver(connectionString);
    DriverPropertyInfo[] dpinfo = driver.getPropertyInfo("", properties);
    System.out.println(dpinfo[0].description);
  }
Copy

일반적으로 이 메서드는 루프 내부에서 호출되어야 합니다. 속성에 대한 정보를 검색한 후 해당 속성을 설정하면 새 설정과 추가 속성이 관련성이 있을 수 있으므로 해당 속성을 검색 및 설정해야 할 수 있습니다.

오브젝트: ParameterMetaData

PreparedStatement의 매개 변수에 대한 정보를 제공합니다.

메서드

메서드 이름

참고

지원되는 메서드

getParameterCount()

getParameterType(int)

getParameterTypeName(int)

getPrecision(int)

getScale(int)

isNullable

지원되지 않는 메서드

getParameterClassName(int)

getParameterMode()

isSigned

Snowflake 고유 동작

없습니다.

오브젝트: PreparedStatement

PreparedStatement 인터페이스는 예를 들어 쿼리를 실행할 수 있는 메서드를 설명합니다.

메서드

메서드 이름

참고

지원되는 메서드

addBatch()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

clearParameters()

getParameterMetaData()

execute()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

executeBatch(String)

executeLargeBatch(String)

executeLargeUpdate(String)

executeQuery()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

executeUpdate()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

setBigDecimal(int, BigDecimal)

setBoolean(int, boolean)

setByte(int, byte)

setBytes(int, byte[])

setDate(int, Date)

setDouble(int, double)

setFloat(int, float)

setInt(int, int)

setLong(int, long)

setNull(int, int)

setObject(int, Object, int, int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

setObject(int, Object, int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

setObject(int, Object)

setShort(int, short)

setString(int, String)

setTime(int, Time)

setTimestamp(int, Timestamp)

지원되지 않는 메서드

setAsciiStream(int, InputStream, int)

setBinaryStream(int, InputStream, int)

setUnicodeStream(int, InputStream, int)

Snowflake 고유 동작

  • addBatch()

    INSERT 문에서만 지원됩니다.

    addBatch 메서드(executeBatch 와 함께 사용)를 사용하여 단일 INSERT 문의 일부로 여러 데이터 행을 삽입할 수 있습니다.

    일괄 처리를 사용하는 것과 사용하지 않는 경우의 차이점은 다중 행 삽입을 사용하는 것과 단일 행 삽입을 사용하는 경우의 차이점과 유사합니다.

    INSERT INTO t1 (c1, c2) VALUES (1, 'One');   -- single row inserted.
    
    INSERT INTO t1 (c1, c2) VALUES (1, 'One'),   -- multiple rows inserted.
                                   (2, 'Two'),
                                   (3, 'Three');
    
    Copy

    일반적으로 행을 일괄 삽입하는 것이 개별 INSERT 문에 같은 수의 행을 삽입하는 것보다 더 효율적입니다. AUTOCOMMIT을 사용할 때(즉, 각 INSERT가 개별 트랜잭션인 경우) 이러한 이점이 훨씬 더 큽니다.

    addBatch 를 사용하는 예시는 일괄 삽입 을 참조하십시오.

    참고

    바인딩할 수 있거나 일괄 결합할 수 있는 데이터 크기의 상한에는 제한이 있습니다. 자세한 내용은 쿼리 텍스트 크기 제한 섹션을 참조하십시오.

  • execute()

    이 메서드는 PreparedStatement 오브젝트가 생성될 때 제공된 SQL 문을 컴파일하여 실행됩니다. 문은 SQL 문의 유형일 수 있습니다. execute() 메서드는 ResultSet 을 반환하지 않습니다.

    이 메서드는 아무 것도 반환하지 않습니다. 쿼리를 실행하고 문이 실행될 때 ResultSet 을 반환해야 하는 경우에는 executeQuery() 메서드를 사용해야 합니다.

  • executeQuery()

    이 메서드는 PreparedStatement 오브젝트가 생성될 때 제공된 SQL 문을 컴파일하여 실행한 후 ResultSet 을 반환합니다.

  • executeUpdate()

    이 메서드는 PreparedStatement 오브젝트가 생성될 때 제공된 SQL 문을 컴파일하여 실행됩니다. 문은 DML 문(INSERT, UPDATE, DELETE 등) 또는 아무 것도 반환하지 않는 SQL 문(예: DDL 문)이어야 합니다.

    문이 DML 문인 경우 executeUpdate() 메서드는 업데이트된 행 수에 해당하는 정수를 반환합니다. 문이 행을 업데이트하지 않은 경우 함수에서는 0 이 반환됩니다.

    ResultSet을 반환하는 SQL 문을 실행해야 하는 경우에는 executeQuery()와 같은 다른 메서드를 사용해야 합니다.

  • setObject()

    이 메서드를 사용하면 타임스탬프 변수를 타임스탬프 열에 바인딩할 때 타임스탬프 값을 해석하기 위해 사용할 타임스탬프 변형(TIMESTAMP_LTZ , TIMESTAMP_NTZ , TIMESTAMP_TZ)을 지정할 수 있습니다. 자세한 내용은 변수를 타임스탬프 열에 바인딩하기 섹션을 참조하십시오.

인터페이스: SnowflakePreparedStatement

SnowflakePreparedStatement 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. Connection.prepareStatement() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 PreparedStatement 타입의 오브젝트를 생성하면 실제로 JDBC PreparedStatement 인터페이스 및 SnowflakePreparedStatement 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakePreparedStatement래핑을 해제 합니다.

추가 메서드

아래 메서드는 PreparedStatement 인터페이스에서 지원하는 메서드에 추가됩니다.

메서드 이름

설명

executeAsyncQuery()

비동기 쿼리를 실행합니다.

getQueryID()

SnowflakePreparedStatement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다.

executeAsyncQuery()
목적

이 메서드는 비동기 쿼리 를 수행하며, 실행을 위해 SQL 문을 제출한 후 쿼리가 완료될 때까지 대기하지 않고 호출자에게 제어를 반환합니다.

executeAsyncQuery() 에 유효한 모든 SQL 문은 executeQuery() 에도 유효합니다.

참고

PUT과 GET과 같은 파일 전송 문은 executeAsyncQuery() 에도 유효하지만 동기적인 방식으로 작동합니다.

인자

없습니다.

반환

《빈》 ResultSet입니다. 사용자는 쿼리 결과를 사용할 수 있을 때까지 resultSet.unwrap(SnowflakeResultSet.class).getStatus() 을 호출하여 결과 세트를 폴링해야 합니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 PreparedStatement 오브젝트의 래핑을 해제 해야 합니다.

...
PreparedStatement prepStatement = connection.prepareStatement("insert into testTable values (?)");
prepStatement.setInt(1, 33);
ResultSet rs = prepStatement.executeAsyncQuery();
...
Copy

매우 유사한 비동기 쿼리의 예 메서드를 사용하는 보다 광범위한 예시는 SnowflakeStatement.executeAsyncQuery() 를 참조하십시오.

getQueryID()
목적

이 메서드는 이 SnowflakePreparedStatement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다. 준비된 이 문을 사용하여 아직 쿼리가 실행되지 않은 경우 메서드는 null을 반환합니다.

인자

없습니다.

반환

이 메서드는 UUID를 포함한 문자열로 ID를 반환합니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 SnowflakePreparedStatement래핑을 해제 해야 합니다.

비동기 쿼리 의 경우에는 명령문의 실행이 완료될 때까지 ID 쿼리를 사용할 수 없습니다. executeAsyncQuery() 를 호출했지만 문의 실행이 완료되기 전에 SnowflakePreparedStatement.getQueryID() 를 호출하면 NULL 값이 반환됩니다. 대신, executeAsyncQuery() 로부터 반환된 ResultSet 오브젝트에 대한 resultSet.unwrap(SnowflakeResultSet.class).getQueryID() 을 호출합니다.

아래의 부분 예시는 이 메서드의 호출 방법을 보여줍니다.

    // Retrieve the query ID from the PreparedStatement.
    String queryID;
    queryID = preparedStatement.unwrap(SnowflakePreparedStatement.class).getQueryID();
Copy

열거형: QueryStatus

열거형 타입은 Snowflake 고유 형식으로 다음을 수행합니다.

  • 비동기 쿼리 의 상태를 나타내는 상수를 정의합니다.

  • SQL 문을 실행할 때 발생하는 모든 오류에 대한 세부 정보를 반환하는 메서드를 정의합니다.

이 열거형 타입은 net.snowflake.client.core 패키지에서 제공됩니다.

열거형 상수

각 열거형 상수는 비동기 쿼리에 대해 가능한 다양한 상태를 나타냅니다.

열거형 상수

설명

RUNNING

쿼리를 아직 실행하는 중입니다.

ABORTING

서버 측에서 쿼리를 중단하는 중입니다.

SUCCESS

쿼리가 성공적으로 종료되었습니다.

FAILED_WITH_ERROR

쿼리가 종료되었지만 실패했습니다.

QUEUED

실행을 위해 쿼리가 큐에서 대기 중이며(즉, 아직 실행이 시작되지 않음), 이러한 일반적인 이유는 리소스를 대기 중이기 때문입니다.

DISCONNECTED

세션의 연결이 끊겼습니다. 쿼리의 상태가 곧 《FAILED_WITH_ERROR》로 변경됩니다.

RESUMING_WAREHOUSE

웨어하우스가 시작되었지만 아직 쿼리가 실행 중이 아닙니다.

BLOCKED

문이 다른 문이 잠근 리소스를 대기하고 있습니다.

NO_DATA

문에 대한 데이터를 아직 사용할 수 없습니다. 이러한 일반적인 이유는 문의 실행이 아직 시작되지 않았기 때문입니다.

메서드

열거형 타입은 다음 메서드를 정의하며, 이 메서드를 사용하면 쿼리 상태가 FAILED_WITH_ERROR 일 때 오류에 대한 세부 정보를 가져올 수 있습니다.

메서드 이름

설명

getErrorCode()

쿼리 실행 중 오류가 발생한 경우 서버에서 오류 코드를 반환합니다.

getErrorMessage()

쿼리 실행 중 오류가 발생한 경우 서버에서 오류 메시지를 반환합니다.

getErrorCode()
목적

쿼리 실행 중 오류가 발생한 경우 이 메서드는 서버에서 오류 코드를 반환합니다.

인자

없습니다.

반환

이 메서드는 오류 코드를 int 으로 반환합니다. 오류가 발생하지 않으면 메서드에서 0 값이 반환됩니다.

QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
if (queryStatus == queryStatus.FAILED_WITH_ERROR) {
  // Print the error code to stdout
  System.out.format("Error code: %d%n", queryStatus.getErrorCode());
}
Copy

이 메서드의 호출을 포함하는 보다 광범위한 예시는 비동기 쿼리의 예 를 참조하십시오.

getErrorMessage()
목적

쿼리 실행 중 오류가 발생한 경우 이 메서드는 서버에서 오류 메시지를 반환합니다.

인자

없습니다.

반환

이 메서드는 오류 메시지를 String 으로 반환합니다. 오류가 발생하지 않으면 메서드에서 No error reported 값이 반환됩니다.

QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
if (queryStatus == queryStatus.FAILED_WITH_ERROR) {
  // Print the error message to stdout
  System.out.format("Error message: %s%n", queryStatus.getErrorMessage());
}
Copy

이 메서드의 호출을 포함하는 보다 광범위한 예시는 비동기 쿼리의 예 를 참조하십시오.

오브젝트: ResultSet

ResultSet 인터페이스는 예를 들어 SELECT 문에서 반환된 행과 열을 읽는 것과 같이 쿼리 결과를 검색하는 메서드를 문서화합니다.

Snowflake ResultSet는 읽기 전용 오브젝트이며, 업데이트할 수 없습니다.

메서드

메서드 이름

참고

지원되는 메서드

close()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

findColumn(String)

getBigDecimal(int, int)

getBigDecimal(String, int)

getBoolean(int)

getBoolean(String)

getByte(int)

getByte(String)

getBytes(int)

getBytes(String)

getDate(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getDate(int, Calendar)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getDate(String)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getDate(String, Calendar)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getDouble(int)

getDouble(String)

getFloat(int)

getFloat(String)

getInt(int)

getInt(String)

getLong(int)

getLong(String)

getMetaData()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getObject(int)

getObject(String)

getShort(int)

getShort(String)

getString(int)

getString(String)

getTime(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getTime(String)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getTimestamp(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getTimestamp(String)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

next()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

wasNull()

지원되지 않는 메서드

clearWarnings()

getArray(int)

getArray(String)

getAsciiStream(int)

getAsciiStream(String)

getBinaryStream(int)

getBinaryStream(String)

getCursorName()

getUnicodeStream(int)

getUnicodeStream(String)

getWarnings()

Snowflake 고유 동작

  • close()

    오브젝트를 닫습니다. 오브젝트가 닫힌 후, 닫힌 오브젝트에 대한 거의 모든 메서드를 호출하면 SQLException 이 발생합니다. 이미 닫힌 오브젝트에서 close 를 호출하면 오류가 발생하지 않지만 예외가 발생합니다.

  • getDate(), getTime(), getTimestamp()

    버전 3.12.17 이상 버전의 JDBC 드라이버에서 이러한 메서드는 세션의 타임존(TIMEZONE 매개 변수를 사용하여 지정)을 사용합니다. 이전 버전에서는 JVM의 타임존을 사용합니다.

    이러한 메서드를 변경하여 JVM의 타임존을 사용하려면 JDBC_USE_SESSION_TIMEZONE 매개 변수를 FALSE 로 설정합니다.

  • getMetaData()

    ResultSet 오브젝트가 비동기 쿼리 용인 경우에는 쿼리 실행이 완료될 때까지 이 메서드가 차단됩니다. 이 메서드를 호출하기 전에 resultSet.unwrap(SnowflakeResultSet.class).getStatus() 를 사용하여 쿼리 상태를 가져올 수 있습니다.

  • next()

    이를 통해 결과 세트의 다음 행이 《현재》 행으로 설정됩니다. getInt() 등의 get*() 메서드를 호출하면 현재 행의 값을 가져옵니다.

    ResultSetclose 메서드에 대한 호출에 의해 닫힌 경우, next 에 대한 후속 호출에서는 예외가 발생하지 않고 false를 반환합니다.

    ResultSet 오브젝트가 비동기 쿼리 용인 경우 결과를 사용할 수 있을 때까지 이 메서드가 차단됩니다. 이 메서드를 호출하기 전에 resultSet.unwrap(SnowflakeResultSet.class).getStatus() 를 사용하여 쿼리 상태를 가져올 수 있습니다.

인터페이스: SnowflakeResultSet

SnowflakeResultSet 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. Statement.getResultSet() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 ResultSet 타입의 오브젝트를 생성하면 실제로 JDBC ResultSet 인터페이스 및 SnowflakeResultSet 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakeResultSet래핑을 해제 합니다.

추가 메서드

메서드 이름

설명

getQueryID()

이 결과 세트를 생성한 문의 Snowflake 쿼리 ID를 반환합니다.

getStatus()

비동기 쿼리에서 반환된 ResultSet의 경우 쿼리 상태를 반환합니다.

getQueryID()
목적

이 메서드는 이 결과 세트를 생성한 문의 Snowflake 쿼리 ID를 반환합니다.

인자

없습니다.

반환

이 메서드는 UUID를 포함한 문자열로 ID를 반환합니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 ResultSet래핑을 해제 해야 합니다.

    String queryID2;
    queryID2 = resultSet.unwrap(SnowflakeResultSet.class).getQueryID();
Copy
getStatus()
목적

SnowflakeStatement.executeAsyncQuery() 와 같은 비동기 쿼리에서 반환된 ResultSet의 경우 이 메서드는 쿼리의 상태를 반환합니다. 상태는 쿼리의 성공, 실패 또는 미완료 여부를 나타냅니다.

인자

없습니다.

반환

QueryStatus 열거형 상수 입니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 ResultSet 오브젝트의 래핑을 해제 해야 합니다.

QueryStatus queryStatus = resultSet.unwrap(SnowflakeResultSet.class).getStatus();
Copy

이 메서드의 호출을 포함하는 보다 광범위한 예시는 비동기 쿼리의 예 를 참조하십시오.

오브젝트: ResultSetMetaData

이 오브젝트는 예를 들어 ResultSet의 열 수와 같은 ResultSet에 대한 정보를 제공합니다.

메서드

메서드 이름

참고

지원되는 메서드

getCatalogName(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getColumnCount()

getColumnDisplaySize(int)

getColumnLabel(int)

getColumnName(int)

getColumnType(int)

getColumnTypeName(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getPrecision(int)

getScale(int)

getSchemaName(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getTableName(int)

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

isAutoIncrement(int)

isCaseSensitive(int)

isCurrency(int)

isDefinitelyWritable(int)

isNullable(int)

isReadOnly(int)

isSearchable(int)

isSigned(int)

isWritable(int)

지원되지 않는 메서드

없습니다.

Snowflake 고유 동작

  • ResultSetMetaData 클래스에는 close() 메서드가 없습니다. 열린 ResultSetMetaData 오브젝트는 ResultSet 오브젝트가 생성된 ResultSetMetaData 를 사용자가 닫을 때 암시적으로 닫힙니다.

  • getCatalogName(), getSchemaName(), getTableName()

    ResultSet 오브젝트가 비동기 쿼리 용인 경우 이 메서드는 빈 문자열을 반환합니다.

  • GEOGRAPHY 열의 경우 getColumnTypeNameGEOGRAPHY 를 반환합니다.

    getColumnTypegetColumnClassName 메서드는 열 타입이 GEOGRAPHY 임을 나타내지 않음에 유의하십시오.

인터페이스: SnowflakeResultSetMetaData

SnowflakeResultSetMetaData 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. ResultSet.getMetaData() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 ResultSetMetaData 타입의 오브젝트를 생성하면 실제로 JDBC ResultSetMetaData 인터페이스 및 SnowflakeResultSetMetaData 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakeResultSetMetaData래핑을 해제 합니다.

추가 메서드

메서드 이름

참고

지원되는 메서드

getColumnIndex(String columnName)

getColumnNames()

getInternalColumnType(int column)

getQueryID()

getColumnIndex(String columnName):
목적

columnName에 해당하는 열의 인덱스를 반환합니다. 예를 들어, 이름이 《BirthDate》인 열이 테이블의 세 번째 열이면 getColumnIndex(《BirthDate》)에서 2가 반환됩니다. (인덱스는 1부터 시작하지 않고 0부터 시작됩니다.)

인자

인덱스를 찾을 열의 이름입니다.

반환

columnName에 해당하는 열의 인덱스를 포함하는 정수를 반환합니다. columnName이 결과 세트의 열과 일치하지 않으면 -1을 반환합니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

getColumnNames():
목적

이 함수는 결과 세트에서 모든 열 이름의 목록을 반환합니다.

이 함수는 인덱스를 기반으로 단일 열 이름을 반환하는 ResultSetMetaData의 getColumnName(int 열) 함수와 다릅니다.

인자

없습니다.

반환

반환되는 값의 데이터 타입은 《목록<문자열>》입니다. 목록에는 열 이름이 포함됩니다. 이름의 순서는 열 인덱스와 순서와 같습니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

getInternalColumnType(int column):
목적

지정된 열의 데이터 타입을 반환합니다.

인자

열: 데이터 타입이 필요한 열의 인덱스(1부터 시작)를 나타냅니다.

반환

지정된 열의 데이터 타입을 반환합니다. 데이터 타입은 정수입니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

getQueryID()
목적

이 메타데이터가 적용되는 쿼리의 Snowflake 쿼리 ID를 반환합니다.

인자

없습니다.

반환

이 메서드는 이 메타데이터가 생성된 쿼리의 쿼리 ID를 반환합니다. ID 쿼리는 UUID를 포함하는 문자열입니다. UUIDs에 대한 정보는 SQL 함수 UUID_STRING 의 설명에 포함됩니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

오브젝트: SnowflakeTimestampWithTimezone

SnowflakeTimestampWithTimezone 오브젝트는 Java Timestamp 오브젝트의 타임스탬프와 연결된 타임존에 대한 정보를 제공합니다. 이 오브젝트를 사용하여 Java Timestamp 문자열에서 정보를 구문 분석하는 대신 타임존을 직접 추출할 수 있습니다. 이 기능에 액세스하려면 다음 Java 라이브러리를 가져와야 합니다.

  • java.sql.Timestamp;

  • java.time.ZonedDateTime;

  • java.util.TimeZone;

메서드

메서드 이름

참고

생성자

SnowflakeTimestampWithTimezone(
    long seconds,
    int nanoseconds,
    TimeZone tz)
Copy
  • 1970년 1월 1일(인터넷 시간) 이후 경과된 시간(초).

  • 소수 나노초 수.

  • 타임존의 ID.

SnowflakeTimestampWithTimezone(
    Timestamp ts,
    TimeZone tz)
Copy
  • 원하는 시간을 나타내는 Timestamp 오브젝트.

  • 타임존의 ID.

SnowflakeTimestampWithTimezone(
    Timestamp ts)
Copy
  • 원하는 시간을 나타내는 Timestamp 오브젝트.

지원되는 메서드

getTimezone()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

toZonedDateTime()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

Snowflake 고유 동작

  • getTimezone()

    타임스탬프에서 타임존을 반환합니다.

    import java.sql.Timestamp;
    import java.time.ZonedDateTime;
    import java.util.TimeZone;
    
    public void testGetTimezone() {
        String timezone = "Australia/Sydney";
    
        // Create a timestamp from a point in time
        Long datetime = System.currentTimeMillis();
        Timestamp currentTimestamp = new Timestamp(datetime);
        SnowflakeTimestampWithTimezone ts =
            new SnowflakeTimestampWithTimezone(currentTimestamp, TimeZone.getTimeZone(timezone));
    
        // Verify timezone was set
        assertEquals(ts.getTimezone().getID(), timezone);
    }
    
    Copy
  • toZonedDateTime()

    SnowflakeTimestampWithTimezone 타임스탬프를 존이 지정된 날짜 시간(Java ZonedDateTime 오브젝트)으로 변환합니다.

    import java.sql.Timestamp;
    import java.time.ZonedDateTime;
    import java.util.TimeZone;
    
    public void testToZonedDateTime() {
        String timezone = "Australia/Sydney";
        String zonedDateTime = "2022-03-17T10:10:08+11:00[Australia/Sydney]";
    
        // Create a timestamp from a point in time
        Long datetime = 1647472208000L;
        Timestamp timestamp = new Timestamp(datetime);
        SnowflakeTimestampWithTimezone ts =
            new SnowflakeTimestampWithTimezone(timestamp, TimeZone.getTimeZone(timezone));
        ZonedDateTime zd = ts.toZonedDateTime();
    
        // Verify timestamp was converted to zoned datetime
        assertEquals(zd.toString(), zonedDateTime);
    }
    
    Copy

오브젝트: Statement

Statement 오브젝트는 SQL 문을 나타냅니다. 문 오브젝트를 사용하면 사용자는 다음과 같은 작업을 수행할 수 있습니다.

  • SQL 문을 실행합니다.

  • 문 실행에 대한 시간 제한을 설정합니다.

  • 쿼리에 대한 결과 세트를 검색합니다.

메서드

메서드 이름

참고

지원되는 메서드

cancel()

close()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

execute(String)

executeBatch(String)

executeLargeBatch(String)

executeLargeUpdate(String)

executeQuery(String)

executeUpdate(String)

getBatchQueryID()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

getMaxFieldSize()

getMaxRows()

getMoreResults()

getQueryTimeout()

getResultSet()

getUpdateCount()

Snowflake 고유 동작입니다(자세한 내용은 아래 참조).

setCursorName(String)

setMaxRows(int)

setQueryTimeout(int)

지원되지 않는 메서드

clearWarnings()

getWarnings()

setEscapeProcessing(boolean)

setMaxFieldSize(int)

Snowflake 고유 동작

  • close()

    이 메서드는 오브젝트를 닫습니다. 오브젝트가 닫힌 후, 닫힌 오브젝트에 대한 거의 모든 메서드를 호출하면 SQLException 이 발생합니다. 이미 닫힌 오브젝트에서 close 를 호출하면 오류가 발생하지 않지만 예외가 발생합니다.

  • getBatchQueryID()

    이 메서드는 이 Statement 에서 가장 최근에 실행된 쿼리 일괄 처리의 Snowflake 쿼리 IDs 목록을 반환합니다. 문을 사용하여 아직 쿼리가 실행되지 않은 경우 메서드는 null을 반환합니다.

    이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 문의 래핑을 해제 해야 합니다. 예:

        connection.setAutoCommit(false);
        statement.addBatch("SELECT 1;");
        statement.addBatch("SELECT 2;");
        statement.executeBatch();
        connection.commit();
        connection.setAutoCommit(true);
        List<String> batchQueryIDs1;
        // Since getQueryID is not standard JDBC API, we must call unwrap() to
        // use these Snowflake methods.
        batchQueryIDs1 = statement.unwrap(SnowflakeStatement.class).getBatchQueryIDs();
        int num_query_ids = batchQueryIDs1.size();
        if (num_query_ids != 2) {
          System.out.println("ERROR: wrong number of query IDs in batch 1.");
        }
        // Check that each query ID is plausible.
        for (int i = 0; i < num_query_ids; i++) {
          String qid = batchQueryIDs1.get(i);
          if (!is_plausible_query_id(qid)) {
            msg = "SEVERE WARNING: suspicious query ID in batch";
            System.out.println("msg");
            System.out.println(qid);
          }
        }
    
    Copy
  • getUpdateCount()

    이 메서드는 가장 최근에 실행된 SQL 문에 의해 업데이트된 행 수를 반환합니다.

    • 문이 DML 문(INSERT, UPDATE, DELETE 등)이면 getUpdateCount() 는 추가, 삭제 또는 변경된 행 수를 반환합니다. 행이 변경되지 않은 경우 이 값은 0 일 수 있습니다.

    • 문이 SELECT문이면 getUpdateCount()-1 을 반환합니다.

    • 문이 DDL문이면 getUpdateCount()-1 을 반환합니다.

인터페이스: SnowflakeStatement

SnowflakeStatement 인터페이스에는 Snowflake의 고유 메서드가 포함되어 있습니다. Connection.createStatement() 메서드 호출 등과 같이 Snowflake JDBC 드라이버를 사용하여 Statement 타입의 오브젝트를 생성하면 실제로 JDBC 문 인터페이스 및 SnowflakeStatement 인터페이스를 모두 구현하는 다른(숨겨진) Snowflake 고유 형식의 오브젝트가 제공됩니다. 그러한 오브젝트에서 메서드에 액세스하려면 오브젝트의 SnowflakeStatement래핑을 해제 합니다.

추가 메서드

메서드 이름

설명

executeAsyncQuery()

비동기 쿼리를 실행합니다.

getQueryID()

Statement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다.

setParameter(String, Value)

Snowflake 고유 매개 변수를 설정합니다.

executeAsyncQuery(String)
목적

이 메서드는 비동기 쿼리 를 수행하며, 실행을 위해 SQL 문을 제출한 후 쿼리가 완료될 때까지 대기하지 않고 호출자에게 제어를 반환합니다.

인자

실행할 SQL 명령이 포함된 문자열입니다. executeAsyncQuery() 에 유효한 모든 SQL 문은 executeQuery() 에도 유효합니다.

참고

PUT과 GET과 같은 파일 전송 문은 executeAsyncQuery() 에도 유효하지만 동기적인 방식으로 작동합니다.

반환

《빈》 ResultSet입니다. 사용자는 쿼리 결과를 사용할 수 있을 때까지 resultSet.unwrap(SnowflakeResultSet.class).getStatus() 을 호출하여 결과 세트를 폴링해야 합니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 Statement 오브젝트의 래핑을 해제 해야 합니다.

이 메서드에 대한 호출을 포함하는 예는 비동기 쿼리의 예 를 참조하십시오.

getQueryID()
목적

이 메서드는 이 Statement 에서 가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID를 반환합니다.

인자

없습니다.

반환

가장 최근에 실행된 쿼리의 Snowflake 쿼리 ID입니다. ID 쿼리는 UUID를 포함하는 문자열입니다. 문을 사용하여 아직 쿼리가 실행되지 않은 경우 메서드는 null을 반환합니다.

Throw

이 메서드는 SQLException 을 throw할 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 문의 래핑을 해제 해야 합니다.

비동기 쿼리 의 경우에는 명령문의 실행이 완료될 때까지 ID 쿼리를 사용할 수 없습니다. executeAsyncQuery() 를 호출했지만 문의 실행이 완료되기 전에 SnowflakeStatement.getQueryID() 를 호출하면 NULL 값이 반환됩니다. 대신, executeAsyncQuery() 로부터 반환된 ResultSet 오브젝트에 대한 resultSet.unwrap(SnowflakeResultSet.class).getQueryID() 을 호출합니다.

    String queryID1;
    queryID1 = statement.unwrap(SnowflakeStatement.class).getQueryID();
Copy
setParameter(String parameter_name, <type> <value>)
목적

SnowflakeStatement 클래스는 setParameter 메서드를 Snowflake 확장으로 제공합니다. 이를 클래스를 사용하면 호출자는 Snowflake 관련 JDBC 매개 변수를 설정할 수 있습니다.

메서드는 오버로드됩니다. JDBC 매개 변수가 다르면 데이터 타입이 달라야 합니다. 함수에 대한 두 번째 인자로 전달할 수 있는 각 유효한 데이터 타입에 대한 메소드가 제공됩니다.

인자
매개 변수_이름:

이 문자열에는 미리 정의된 Snowflake JDBC 매개 변수의 이름이 포함되어야 합니다. 미리 정의된 JDBC 매개 변수(및 유효한 값 또는 범위)는 다음과 같습니다.

JDBC 매개 변수

참고

MULTI_STATEMENT_COUNT

문의 수를 지정하는 정수(0 = 문의 수가 제한이 없음, 1 이상은 실행되어야 하는 명령문의 정확한 수를 나타냄)입니다.

값:

지정된 JDBC 매개 변수에 할당되는 값입니다. 지정한 JDBC 매개 변수와 데이터 타입이 호환되는지 확인해야 합니다.

반환

없습니다.

Throw

이 함수에서는 SQLException가 throw될 수 있습니다.

참고

이 메서드는 JDBC 표준에 대한 Snowflake 확장입니다. 이 메서드를 사용하려면 문의 래핑을 해제 해야 합니다.

Statement statement1;
...
// Tell Statement to expect to execute 2 statements:
statement1.unwrap(SnowflakeStatement.class).setParameter(
        "MULTI_STATEMENT_COUNT", 2);
Copy

인터페이스: SQLException

오류가 발생 시 SQLException 오브젝트는 JDBC 드라이버 메서드에 의해 throw되며 해당 오류에 대한 정보가 포함됩니다.

메서드 이름

설명

getErrorCode()

Snowflake 고유의 오류 코드를 반환합니다.

getMessage()

이 메서드는 오류를 설명하는 문자열을 반환합니다.

getSQLState()

SQLState을 반환합니다.

getErrorCode()
목적

이 메서드는 사용자 지정 Snowflake 오류 코드를 반환합니다.

인자

없습니다.

반환

Snowflake 고유의 오류 코드입니다.

참고

getSQLState() 메서드도 참조하십시오.

getMessage()
목적

이 메서드는 오류를 설명하는 문자열을 반환합니다.

인자

없습니다.

반환

Snowflake 고유의 오류 메시지입니다.

getSQLState()
목적

이 메서드는 오류에 따른 5자리 영숫자 값을 포함하는 문자열을 반환합니다.

인자

없습니다.

반환

Snowflake 고유의 SQLState입니다. SQLState는 발생한 특정 오류를 나타내는 5자리 영숫자 문자열입니다.