BigQuery용 JDBC 드라이버 사용

BigQuery용 Java 데이터베이스 연결 (JDBC) 드라이버는 Java 애플리케이션을 BigQuery에 연결하여 원하는 도구 및 인프라로 BigQuery 기능을 사용할 수 있도록 지원합니다. Java가 아닌 애플리케이션을 BigQuery에 연결하려면 BigQuery용 Simba Open Database Connectivity (ODBC) 드라이버를 사용하세요.

제한사항

BigQuery용 JDBC 드라이버에는 다음과 같은 제한사항이 적용됩니다.

  • 이 드라이버는 BigQuery에만 해당하며 다른 제품 또는 서비스에는 사용할 수 없습니다.
  • INTERVAL 데이터 유형은 BigQuery Storage Read API에서 지원되지 않습니다.
  • 모든 데이터 조작 언어 (DML) 제한사항이 적용됩니다.

시작하기 전에

  1. JDBC 드라이버, Apache Maven, java.sql 패키지에 익숙해야 합니다.
  2. 시스템이 Java 런타임 환경 (JRE) 8.0 이상으로 구성되어 있는지 확인합니다. JRE 버전 확인에 관한 자세한 내용은 JRE 환경 확인을 참고하세요.
  3. BigQuery에 인증하고 나중에 BigQuery용 JDBC 드라이버와 연결을 설정할 때 사용되는 다음 정보를 기록해 둡니다. 사용하는 인증 방법에 해당하는 정보만 기록하면 됩니다.

    인증 방법 인증 정보 예시 연결 속성 (나중에 설정)
    표준 서비스 계정 서비스 계정 이메일 bq-jdbc-sa@mytestproject.iam.gserviceaccount.com OAuthServiceAcctEmail
    서비스 계정 키 (JSON 객체) my-sa-key OAuthPvtKey
    서비스 계정 키 파일 서비스 계정 키 파일 (전체 경로) path/to/file/secret.json OAuthPvtKeyPath
    Google 사용자 계정 클라이언트 ID 123-abc.apps.googleusercontent.com OAuthClientId
    클라이언트 보안 비밀번호 _aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV OAuthClientSecret
    사전 생성된 액세스 토큰 액세스 토큰 ya29.a0AfH6SMCiH1L-x_yZ OAuthAccessToken
    사전 생성된 갱신 토큰 갱신 토큰 1/fFAGRNJru1FTz70BzhT3Zg OAuthRefreshToken
    클라이언트 ID 123-abc.apps.googleusercontent.com OAuthClientId
    클라이언트 보안 비밀번호 _aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV OAuthClientSecret
    애플리케이션 기본 사용자 인증 정보 없음 해당 사항 없음 해당 사항 없음
    구성 파일 구성 파일 (JSON 객체 또는 전체 경로) path/to/file/secret.json OAuthPvtKey
    외부 계정 구성 객체 계정 구성 객체 external_account_configuration_object OAuthPvtKey
    기타 외부 계정 구성 파일의 잠재고객 속성 //iam.googleapis.com/projects/my-project/locations/US-EAST1/workloadIdentityPools/my-pool-/providers/my-provider BYOID_AudienceUri
    토큰 가져오기 및 환경 정보 파일 {\"file\":\"/path/to/file\"} BYOID_CredentialSource
    사용자 프로젝트 (직원 풀을 사용하는 경우에만) my_project BYOID_PoolUserProject
    서비스 계정 가장 URI (인력 풀을 사용하는 경우에만 해당) my-sa BYOID_SA_Impersonation_Uri
    토큰 교환 사양에 기반한 보안 토큰 서비스 토큰 urn:ietf:params:oauth:tokentype:id_token BYOID_SubjectTokenType
    보안 토큰 서비스 토큰 교환 엔드포인트 https://sts.googleapis.com/v1/token BYOID_TokenUri

개발 환경 구성

BigQuery용 JDBC 드라이버를 사용하여 개발 환경을 구성하려면 다음 단계를 따르세요.

  1. 다음 JDBC 패키지 중 하나를 다운로드합니다.

  2. Java 컴파일러와 런타임이 필요한 JDBC 클래스를 찾을 수 있도록 다운로드한 JAR 파일을 클래스 경로에 추가합니다. 클래스 경로에 파일을 추가하는 방법에 대한 자세한 내용은 클래스 경로 설정을 참고하세요.

  3. 빌드 파일에 다음 종속 항목을 추가합니다.

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery-jdbc</artifactId>
        <version>0.0.1</version>
        <scope>system</scope>
        <systemPath>path/to/file/google-jdbc-jar-with-dependencies.jar</systemPath>
    </dependency>
  4. Gradle 프로젝트를 사용하는 경우 빌드 파일에 다음을 추가합니다.

    dependencies {
    // ... other dependencies
    implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar')
    }

연결 설정

BigQuery용 JDBC 드라이버를 사용하여 Java 애플리케이션과 BigQuery 간의 연결을 설정하려면 다음 단계를 따르세요.

  1. BigQuery용 JDBC 드라이버의 연결 문자열을 확인합니다. 이 문자열은 Java 애플리케이션과 BigQuery 간의 연결을 설정하는 데 필요한 모든 정보를 캡처합니다. 연결 문자열의 형식은 다음과 같습니다.

    jdbc:bigquery://HOST:PORT;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;AUTH_PROPS;OTHER_PROPS

    다음을 바꿉니다.

    • HOST: 서버의 DNS 또는 IP 주소입니다.
    • PORT: TCP 포트 번호입니다.
    • PROJECT_ID: BigQuery 프로젝트의 ID입니다.
    • AUTH_TYPE: 사용한 인증 유형을 지정하는 숫자입니다. 다음 필드 중 하나는 사용해야 합니다.
      • 0: 서비스 계정 인증 (표준 및 키 파일)
      • 1: Google 사용자 계정 인증
      • 2: 사전 생성된 갱신 또는 액세스 토큰 인증
      • 3: 애플리케이션 기본 사용자 인증 정보 인증
      • 4: 기타 인증 방법
    • AUTH_PROPS: BigQuery에 인증할 때 기록한 인증 정보입니다. property_1=value_1; property_2=value_2;... 형식으로 나열됩니다. 예를 들어 서비스 계정 키 파일로 인증한 경우 OAuthPvtKeyPath=path/to/file/secret.json입니다.
    • OTHER_PROPS (선택사항): JDBC 드라이버의 추가 연결 속성으로, property_1=value_1; property_2=value_2;... 형식으로 나열됩니다. 연결 속성의 전체 목록은 연결 속성을 참고하세요.
  2. DriverManager 또는 DataSource 클래스를 사용하여 Java 애플리케이션을 BigQuery용 JDBC 드라이버에 연결합니다.

    • DriverManager 클래스와 연결합니다.

      import java.sql.Connection;
      import java.sql.DriverManager;
      
      private static Connection getJdbcConnectionDM(){
        Connection connection = DriverManager.getConnection(CONNECTION_STRING);
        return connection;
      }

      CONNECTION_STRING를 이전 단계의 연결 문자열로 바꿉니다.

    • DataSource 클래스와 연결합니다.

      import com.google.cloud.bigquery.jdbc.DataSource;
      import java.sql.Connection;
      import java.sql.SQLException;
      
      private static public Connection getJdbcConnectionDS() throws SQLException {
        Connection connection = null;
        DataSource dataSource = new com.google.cloud.bigquery.jdbc.DataSource();
        dataSource.setURL(CONNECTION_STRING);
        connection = dataSource.getConnection();
        return connection;
      }

      CONNECTION_STRING를 이전 단계의 연결 문자열로 바꿉니다.

      DataSource 클래스에는 연결 문자열에 포함하는 대신 연결 속성을 설정하는 데 사용할 수 있는 setter 메서드도 있습니다. 다음은 그 예시입니다.

      private static Connection getConnection() throws SQLException {
        DataSource ds = new DataSource();
        ds.setURL(jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;);
        ds.setAuthType(3);  // Application Default Credentials
        ds.setProjectId("MyTestProject");
        ds.setEnableHighThroughputAPI(true);
        ds.setLogLevel("6");
        ds.setUseQueryCache(false);
        return ds.getConnection();
      }

연결 속성

JDBC 드라이버 연결 속성은 데이터베이스에 연결을 설정할 때 연결 문자열에 포함하거나 setter 메서드를 통해 전달하는 구성 매개변수입니다. 다음 연결 속성은 BigQuery용 JDBC 드라이버에서 지원됩니다.

연결 속성 설명 기본값 데이터 유형 필수
AdditionalProjects 드라이버가 쿼리 및 메타데이터 작업을 위해 액세스할 수 있는 프로젝트입니다. ProjectId 속성으로 설정된 기본 프로젝트 외에 추가로 액세스할 수 있습니다. 해당 사항 없음 쉼표로 구분된 문자열 아니요
AllowLargeResults QueryDialect 속성이 BIG_QUERY로 설정된 경우 드라이버가 128MB보다 큰 쿼리 결과를 처리하는지 여부를 결정합니다. QueryDialect 속성이 SQL로 설정된 경우 드라이버는 항상 대규모 쿼리 결과를 처리합니다. TRUE 불리언 아니요
BYOID_AudienceUri 외부 계정 구성 파일의 잠재고객 속성입니다. audience 속성은 워크로드 아이덴티티 풀 또는 직원 풀의 리소스 이름과 해당 풀의 공급자 식별자를 포함할 수 있습니다. 해당 사항 없음 문자열 OAuthType=4인 경우에만
BYOID_CredentialSource 토큰 검색 및 환경 정보입니다. 해당 사항 없음 문자열 OAuthType=4인 경우에만
BYOID_PoolUserProject 직원 풀이 인증에 사용되는 경우의 사용자 프로젝트입니다. 해당 사항 없음 문자열 OAuthType=4를 사용하고 직원 풀을 사용하는 경우에만
BYOID_SA_Impersonation_Uri 인증에 워크포스 풀이 사용되는 경우 서비스 계정 명의 도용의 URI입니다. 해당 사항 없음 문자열 OAuthType=4를 사용하고 직원 풀을 사용하는 경우에만
BYOID_SubjectTokenType 토큰 교환 사양에 기반한 보안 토큰 서비스 토큰입니다. 다음 중 하나입니다.
  • urn:ietf:params:oauth:token-type:jwt
  • urn:ietf:params:oauth:token-type:id_token
  • urn:ietf:params:oauth:token-type:saml2
  • urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:tokentype:id_token 문자열 OAuthType=4인 경우에만
BYOID_TokenUri 보안 토큰 서비스 토큰 교환 엔드포인트입니다. https://sts.googleapis.com/v1/token 문자열 아니요
ConnectionPoolSize 연결 풀링이 사용 설정된 경우 연결 풀 크기입니다. 10 길이 아니요
DefaultDataset 쿼리에 지정되지 않은 경우 사용되는 데이터 세트입니다. 해당 사항 없음 문자열 아니요
EnableHighThroughputAPI Storage Read API를 사용할 수 있는지 확인합니다. Storage Read API를 사용하려면 HighThroughputActivationRatioHighThroughputMinTableSize 속성도 TRUE로 설정해야 합니다. FALSE 불리언 아니요
EnableSession 연결이 세션을 시작하는지 여부를 결정합니다. TRUE로 설정된 경우 세션 ID가 모든 후속 쿼리에 전달됩니다. FALSE 불리언 아니요
EnableWriteAPI Storage Write API를 사용할 수 있는지 확인합니다. 일괄 삽입을 사용 설정하려면 TRUE로 설정해야 합니다. FALSE 불리언 아니요
EndpointOverrides 다음을 덮어쓰는 맞춤 엔드포인트:
  • BIGQUERY=https://bigquery.googleapis.com
  • READ_API=https://bigquerystorage.googleapis.com
  • OAUTH2=https://oauth2.googleapis.com
  • STS=https://sts.googleapis.com
해당 사항 없음 쉼표로 구분된 문자열 아니요
FilterTablesOnDefaultDataset DatabaseMetaData.getTables()DatabaseMetaData.getColumns() 메서드에서 반환되는 메타데이터의 범위를 결정합니다. FALSE로 설정하면 필터링이 발생하지 않습니다. 필터링을 사용 설정하려면 DefaultDataset 속성도 설정해야 합니다. FALSE 불리언 아니요
HighThroughputActivationRatio 쿼리 응답의 페이지 수에 대한 기준입니다. 이 수를 초과하고 EnableHighThroughputAPIHighThroughputMinTableSize 조건이 충족되면 드라이버가 Storage Read API를 사용하기 시작합니다. 2 정수 아니요
HighThroughputMinTableSize 쿼리 응답의 행 수에 대한 기준입니다. 이 숫자를 초과하고 EnableHighThroughputAPIHighThroughputActivationRatio 조건이 충족되면 드라이버가 Storage Read API를 사용하기 시작합니다. 100 정수 아니요
JobCreationMode 작업을 사용하거나 사용하지 않고 쿼리를 실행할지 여부를 결정합니다. 1 값은 모든 쿼리에 대해 작업이 생성됨을 의미하고 2 값은 작업 없이 쿼리를 실행할 수 있음을 의미합니다. 2 정수 아니요
JobTimeout 서버에서 작업이 취소되는 작업 제한 시간 (초)입니다. 0 길이 아니요
KMSKeyName 데이터 암호화를 위한 KMS 키 이름입니다. 해당 사항 없음 문자열 아니요
Labels 쿼리 작업을 정리하고 그룹화하기 위해 쿼리와 연결된 라벨입니다. 해당 사항 없음 Map<String, String> 아니요
LargeResultDataset LargeResultTable 속성이 설정된 경우에만 크기가 큰 쿼리 결과의 대상 데이터 세트입니다. 이 속성을 설정하면 데이터 쓰기가 결과 캐시를 우회하고 결과가 작더라도 각 쿼리에 대한 청구가 트리거됩니다. _google_jdbc 문자열 아니요
LargeResultsDatasetExpirationTime 대규모 결과 데이터 세트의 모든 테이블의 수명(밀리초)입니다. 데이터 세트에 이미 기본 만료 시간이 설정되어 있으면 이 속성은 무시됩니다. 3600000 길이 아니요
LargeResultTable LargeResultDataset 속성이 설정된 경우에만 크기가 큰 쿼리 결과의 대상 테이블입니다. 이 속성을 설정하면 데이터 쓰기가 결과 캐시를 우회하고 결과가 작더라도 각 쿼리에 대한 청구가 트리거됩니다. temp_table... 문자열 아니요
ListenerPoolSize 연결 풀링이 사용 설정된 경우 리스너 풀 크기입니다. 10 길이 아니요
Location 데이터 세트가 생성되거나 쿼리되는 위치입니다. 이 속성이 설정되지 않은 경우 BigQuery는 위치를 자동으로 결정합니다. 해당 사항 없음 문자열 아니요
LogLevel 데이터베이스 상호작용 중에 java.util.logging 패키지에서 로깅하는 세부정보 수준입니다. 로깅은 성능에 영향을 미칠 수 있으므로 문제를 포착하기 위해 일시적으로만 사용 설정하세요. 다음 중 하나입니다.
  • 0: OFF 수준
  • 1: SEVERE 수준
  • 2: WARNING 수준
  • 3: INFO 수준
  • 4: CONFIG 수준
  • 5: FINE 수준
  • 6: FINER 수준
  • 7: FINEST 수준
  • 8: ALL 수준
0 정수 아니요
LogPath 로그 파일이 기록되는 디렉터리입니다. 해당 사항 없음 문자열 아니요
MaximumBytesBilled 청구되는 바이트의 한도입니다. 청구되는 바이트가 이 숫자를 초과하는 쿼리는 요금이 청구되지 않고 실패합니다. 0 길이 아니요
MaxResults 페이지당 최대 결과 수입니다. 10000 길이 아니요
MetaDataFetchThreadCount 데이터베이스 메타데이터 메서드에 사용되는 스레드 수입니다. 32 정수 아니요
OAuthAccessToken 사전 생성된 액세스 토큰 인증에 사용되는 액세스 토큰입니다. 해당 사항 없음 문자열 OAUTH_TYPE=2인 경우에만
OAuthClientId 사전 생성된 갱신 토큰 인증 및 사용자 계정 인증의 클라이언트 ID입니다. 해당 사항 없음 문자열 OAUTH_TYPE=1 또는 OAUTH_TYPE=2인 경우에만
OAuthClientSecret 사전 생성된 갱신 토큰 인증 및 사용자 계정 인증을 위한 클라이언트 보안 비밀번호입니다. 해당 사항 없음 문자열 OAUTH_TYPE=1 또는 OAUTH_TYPE=2인 경우에만
OAuthP12Password PKCS12 키 파일의 비밀번호입니다. notasecret 문자열 아니요
OAuthPvtKey 서비스 계정 인증을 사용할 때의 서비스 계정 키입니다. 이 값은 원시 JSON 키 파일 객체 또는 JSON 키 파일의 경로일 수 있습니다. 해당 사항 없음 문자열 OAUTH_TYPE=0OAuthPvtKeyPath 값이 설정되지 않은 경우에만
OAuthPvtKeyPath 서비스 계정 인증을 사용하는 경우 서비스 계정 키의 경로입니다. 해당 사항 없음 문자열 OAUTH_TYPE=0OAuthPvtKey, OAuthServiceAcctEmail 값이 설정되지 않은 경우에만
OAuthRefreshToken 사전 생성된 갱신 토큰 인증을 위한 갱신 토큰입니다. 해당 사항 없음 문자열 OAUTH_TYPE=2인 경우에만
OAuthServiceAcctEmail 서비스 계정 인증을 사용할 때의 서비스 계정 이메일입니다. 해당 사항 없음 문자열 OAUTH_TYPE=0OAuthPvtKeyPath 값이 설정되지 않은 경우에만
OAuthType 인증 유형입니다. 다음 중 하나입니다.
  • 0: 서비스 계정 인증
  • 1: 사용자 계정 인증
  • 2: 사전 생성된 갱신 또는 액세스 토큰 인증
  • 3: 애플리케이션 기본 사용자 인증 정보 인증
  • 4: 기타 인증 방법
-1 정수
PartnerToken Google Cloud 파트너가 드라이버 사용을 추적하는 데 사용하는 토큰입니다. 해당 사항 없음 문자열 아니요
ProjectId 드라이버의 기본 프로젝트 ID입니다. 이 프로젝트는 쿼리를 실행하는 데 사용되며 리소스 사용량에 따라 요금이 청구됩니다. 설정되지 않은 경우 드라이버가 프로젝트 ID를 추론합니다. 해당 사항 없음 문자열 아니요, 그러나 적극 권장됩니다.
ProxyHost JDBC 연결이 라우팅되는 프록시 서버의 호스트 이름 또는 IP 주소입니다. 해당 사항 없음 문자열 아니요
ProxyPort 프록시 서버가 연결을 수신 대기하는 포트 번호입니다. 해당 사항 없음 문자열 아니요
ProxyPwd 프록시 서버를 통해 연결할 때 인증에 필요한 비밀번호입니다. 해당 사항 없음 문자열 아니요
ProxyUid 프록시 서버를 통해 연결할 때 인증에 필요한 사용자 이름입니다. 해당 사항 없음 문자열 아니요
QueryDialect 쿼리 실행을 위한 SQL 언어입니다. GoogleSQL (적극 권장)에는 SQL를 사용하고 기존 SQL에는 BIG_QUERY를 사용합니다. SQL 문자열 아니요
QueryProperties REST 연결 속성을 사용하여 쿼리 동작을 맞춤설정할 수 있습니다. 해당 사항 없음 Map<String, String> 아니요
RequestGoogleDriveScope 1로 설정된 경우 연결에 읽기 전용 Drive 범위를 추가합니다. 0 정수 아니요
RetryInitialDelay 첫 번째 재시도 전 지연 시간 (초)을 설정합니다. 0 길이 아니요
RetryMaxDelay 재시도 지연의 최대 한도 (초)를 설정합니다. 0 길이 아니요
ServiceAccountImpersonationChain 가장 체인에 있는 서비스 계정 이메일의 쉼표로 구분된 목록입니다. 해당 사항 없음 문자열 아니요
ServiceAccountImpersonationEmail 가장할 서비스 계정 이메일입니다. 해당 사항 없음 문자열 아니요
ServiceAccountImpersonationScopes 가장된 계정과 함께 사용할 OAuth2 범위의 쉼표로 구분된 목록입니다. https://www.googleapis.com/auth/bigquery 문자열 아니요
ServiceAccountImpersonationTokenLifetime 가장된 계정 토큰 수명 (초)입니다. 3600 정수 아니요
SSLTrustStore 신뢰할 수 있는 인증 기관 (CA) 인증서가 포함된 Java 트러스트 저장소의 전체 경로입니다. 드라이버는 이 트러스트 저장소를 활용하여 SSL/TLS 핸드셰이크 중에 서버의 ID를 검증합니다. 해당 사항 없음 문자열 아니요
SSLTrustStorePwd SSLTrustStore 속성에 지정된 Java TrustStore의 비밀번호입니다. 해당 사항 없음 문자열 Java TrustStore가 비밀번호로 보호된 경우에만
SWA_ActivationRowCount 이 값을 초과하면 커넥터가 Storage Write API로 전환되는 executeBatch insert 행의 기준입니다. 3 정수 아니요
SWA_AppendRowCount 쓰기 스트림의 크기입니다. 1000 정수 아니요
Timeout 커넥터가 제한 시간 초과 전에 실패한 API 호출을 재시도하는 시간(초)입니다. 0 길이 아니요
UniverseDomain 조직의 Google Cloud 리소스와 연결된 최상위 도메인입니다. googleapis.com 문자열 아니요
UnsupportedHTAPIFallback 커넥터가 REST API로 대체되는지 (TRUE로 설정된 경우) 또는 오류를 반환하는지 (FALSE로 설정된 경우)를 결정합니다. TRUE 불리언 아니요
UseQueryCache 쿼리 캐싱을 사용 설정합니다. TRUE 불리언 아니요

드라이버로 쿼리 실행

JDBC 드라이버를 통해 BigQuery에 연결된 Java 애플리케이션을 사용하면 이제 표준 JDBC 프로세스를 통해 개발 환경에서 쿼리를 실행할 수 있습니다. 모든 BigQuery 할당량 및 한도가 적용됩니다.

데이터 유형 매핑

BigQuery용 JDBC 드라이버를 통해 쿼리를 실행하면 다음 데이터 유형 매핑이 발생합니다.

GoogleSQL 유형 Java 유형
ARRAY Array
BIGNUMERIC BigDecimal
BOOL Boolean
BYTES byte[]
DATE Date
DATETIME String
FLOAT64 Double
GEOGRAPHY String
INT64 Long
INTERVAL String
JSON String
NUMERIC BigDecimal
STRING String
STRUCT Struct
TIME Time
TIMESTAMP Timestamp

예시

다음 섹션에서는 BigQuery용 JDBC 드라이버를 통해 BigQuery 기능을 사용하는 예를 제공합니다.

위치 매개변수

다음 예에서는 위치 매개변수를 사용하여 쿼리를 실행합니다.

PreparedStatement preparedStatement = connection.prepareStatement(
    "SELECT * FROM MyTestTable where testColumn = ?");
preparedStatement.setString(1, "string2");
ResultSet resultSet = statement.executeQuery(selectQuery);

중첩되고 반복되는 레코드

다음 예에서는 Struct 데이터의 기본 레코드를 쿼리합니다.

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct obj = (Struct) resultSet.getObject(1);
    System.out.println(obj.toString());

드라이버는 기본 레코드를 구조체 객체 또는 JSON 객체의 문자열 표현으로 반환합니다. 결과는 다음과 비슷합니다.

{
  "v": {
    "f": [
      {
        "v": "Adam"
      },
      {
        "v": "5"
      }
    ]
  }
}

다음 예에서는 Struct 객체의 하위 구성요소를 쿼리합니다.

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct structObject = (Struct) resultSet.getObject(1);
    Object[] structComponents = structObject.getAttributes();
    for (Object component : structComponents){
      System.out.println(component.toString());
    }

다음 예에서는 반복 데이터의 표준 배열을 쿼리한 후 결과를 확인합니다.

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT [1,2,3]");
resultSet.next();
Object[] arrayObject = (Object[]) resultSet.getArray(1).getArray();

// Verify Result
int count =0;
for (; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

다음 예에서는 반복 데이터의 Struct 배열을 쿼리한 다음 결과를 확인합니다.

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT "
    + "[STRUCT(\"Adam\" as name, 12 as age), "
    + "STRUCT(\"Lily\" as name, 17 as age)]");

Struct[] arrayObject = (Struct[]) resultSet.getArray(1).getArray();

// Verify Result
for (int count =0; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

일괄 삽입

다음 예에서는 executeBatch 메서드를 사용하여 대량 삽입 작업을 실행합니다.

Connection conn = DriverManager.getConnection(connectionUrl);
PreparedStatement statement = null;
Statement st = conn.createStatement();
final String insertQuery = String.format(
        "INSERT INTO `%s.%s.%s` "
      + " (StringField, IntegerField, BooleanField) VALUES(?, ?, ?);",
        DEFAULT_CATALOG, DATASET, TABLE_NAME);

statement = conn.prepareStatement(insertQuery1);

for (int i=0; i<2000; ++i) {
      statement.setString(1, i+"StringField");
      statement.setInt(2, i);
      statement.setBoolean(3, true);
      statement.addBatch();
}

statement.executeBatch();

가격 책정

BigQuery용 JDBC 드라이버는 무료로 다운로드할 수 있으며 드라이버를 사용하는 데 추가 라이선스가 필요하지 않습니다. 하지만 드라이버를 사용하는 경우 표준 BigQuery 가격 책정이 적용됩니다.

다음 단계