All Products
Search
Document Center

MaxCompute:Penggunaan

Last Updated:Aug 22, 2026

Panduan ini menjelaskan cara mengunduh driver JDBC MaxCompute dan menghubungkan ke MaxCompute, serta menyertakan contoh kode untuk membantu Anda memulai.

Peringatan

  • Untuk mengeksekusi pernyataan SQL dan memperoleh hasil eksekusinya menggunakan driver JDBC MaxCompute, Anda harus memenuhi persyaratan berikut:

    • Anda adalah anggota proyek.

    • Anda memiliki izin CREATE INSTANCE pada proyek tersebut.

    • Anda memiliki izin SELECT dan DOWNLOAD pada tabel yang ingin Anda gunakan.

      Catatan
      • Saat menggunakan MaxCompute JDBC V1.9 atau versi sebelumnya, tabel temporary dibuat secara otomatis untuk setiap kueri. Anda dapat menggunakan perintah Tunnel untuk memperoleh hasil kueri dari tabel temporary tersebut. Untuk menggunakan versi ini, Anda harus memiliki izin CREATE TABLE.

      • Saat menggunakan MaxCompute JDBC V2.2 atau versi yang lebih baru, tidak ada tabel temporary yang dibuat secara otomatis untuk setiap kueri. Anda dapat memanggil antarmuka InstanceTunnel untuk memperoleh hasil kueri, terlepas dari apakah Anda memiliki izin CREATE TABLE atau tidak.

      Untuk informasi selengkapnya tentang izin MaxCompute, lihat Izin MaxCompute.

  • MaxCompute menyediakan fitur perlindungan data. Jika fitur perlindungan data diaktifkan untuk suatu proyek, Anda tidak dapat memindahkan data keluar dari proyek tersebut. Jika Anda menggunakan MaxCompute JDBC versi sebelum V2.4, tidak ada result sets yang dapat diperoleh. Jika Anda menggunakan MaxCompute JDBC V2.4 atau versi yang lebih baru, jumlah baris hasil yang Anda peroleh tidak boleh melebihi nilai parameter READ_TABLE_MAX_ROW. Untuk informasi selengkapnya tentang parameter ini, lihat Operasi proyek. Untuk informasi selengkapnya tentang fitur perlindungan data, lihat Perlindungan data proyek.

  • Edisi tipe data MaxCompute V2.0 mendukung lebih banyak tipe data, seperti TINYINT, SMALLINT, DATETIME, TIMESTAMP, ARRAY, MAP, dan STRUCT. Untuk menggunakan tipe data baru ini, Anda harus menjalankan perintah berikut untuk mengaktifkan edisi tipe data MaxCompute V2.0. Untuk informasi selengkapnya, lihat Panduan versi tipe data.

    set odps.sql.type.system.odps2=true
  • Untuk JDBC V3.4.1 dan versi yang lebih baru, jika Anda memiliki kueri SQL panjang (lebih dari 1 KB), Anda harus mengontrol konkurensi dengan hati-hati. Misalnya, saat menggunakan instance ECS dengan 8 vCPU dan memori 16,0 GiB, konkurensi tidak boleh melebihi 100. Jika Anda tidak dapat mengontrol konkurensi secara efektif, Anda dapat melakukan upgrade JDBC ke V3.8.8 atau V3.9.3 dan mengatur skipCheckIfSelect=true untuk menonaktifkan fitur parsing SQL. Untuk informasi selengkapnya tentang fitur ini, lihat Pembaruan versi.

Mengunduh driver JDBC

Anda dapat memperoleh paket JAR MaxCompute untuk berbagai versi dari OSS, GitHub, atau Repositori Maven. Kami menyarankan Anda mengunduh paket JAR yang mencakup semua dependensi (jar-with-dependencies).

Contoh berikut menunjukkan dependensi Project Object Model (POM) untuk menggunakan driver JDBC MaxCompute dengan Maven.

<dependency>
  <groupId>com.aliyun.odps</groupId>
  <artifactId>odps-jdbc</artifactId>
  <version>3.8.6</version>
  <classifier>jar-with-dependencies</classifier>
</dependency>
Catatan

Driver JDBC MaxCompute adalah proyek open source yang tersedia di aliyun-odps-jdbc.

Kami menyambut kontribusi Anda dalam pengembangan dan peningkatan driver JDBC ini. Anda dapat melaporkan isu di halaman Issues atau memberikan kontribusi perbaikan kode melalui Pull requests. Saat menggunakan Issues dan Pull requests, ikuti persyaratan templat proyek.

Parameter JDBC

Anda dapat mengonfigurasi JDBC menggunakan parameter URL dan objek Properties. Objek Properties memiliki prioritas lebih tinggi dan menggantikan parameter URL.

Catatan

Jika kunci URL berisi odps_config=config_file, JDBC membaca config_file sebagai parameter Properties.

  • Parameter dasar

    Kunci URL

    Kunci properti

    Wajib

    Deskripsi

    project

    project_name

    Ya

    Nama proyek MaxCompute.

    accessId

    access_id

    Ya

    ID AccessKey Akun Alibaba Cloud Anda.

    Anda dapat memperoleh ID AccessKey Anda di halaman Manajemen AccessKey.

    accessKey

    access_key

    Ya

    Rahasia AccessKey Akun Alibaba Cloud Anda.

    Anda dapat memperoleh rahasia AccessKey Anda di halaman Manajemen AccessKey.

    logview

    logview_host

    Tidak

    URL MaxCompute LogView. Nilainya tetap pada http://logview.odps.aliyun.com.

    tunnelEndpoint

    tunnel_endpoint

    Tidak

    Titik akhir layanan MaxCompute Tunnel.

    Untuk titik akhir Tunnel tiap wilayah dan jenis jaringan, lihat Titik akhir.

  • Parameter konfigurasi log

    Kunci URL

    Kunci properti

    Wajib

    Deskripsi

    enableOdpsLogger

    enable_odps_logger

    Tidak

    Menentukan apakah akan mengaktifkan logger JDBC MaxCompute. Nilai yang valid:

    • False (default): Menonaktifkan logger.

    • True: Diaktifkan. Log ditulis ke file jdbc.log di direktori paket JAR.

    logConfFile

    log_conf_file

    Tidak

    Anda dapat menentukan file konfigurasi SLF4J tambahan untuk mengonfigurasi output log secara fleksibel, seperti file output dan logLevel. Metode ini mengharuskan Anda menambahkan dependensi berikut ke file pom.xml proyek Anda:

    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>

    Untuk contoh konfigurasi, lihat Contoh file konfigurasi.

    logLevel

    log_level

    Tidak

    Tingkat log output. Nilai default: INFO.

  • Parameter lainnya

    Kunci URL

    Kunci properti

    Wajib

    Deskripsi

    stsToken

    sts_token

    Tidak

    Token STS Alibaba Cloud.

    charset

    charset

    Tidak

    Set karakter untuk input dan output. Nilai default: UTF-8.

    useProjectTimeZone

    use_project_time_zone

    Tidak

    Menentukan apakah akan menggunakan properti odps.sql.timezone proyek. Nilai yang valid:

    • False (default): Tidak menggunakan properti tersebut.

    • True: Menggunakan properti tersebut.

    Catatan

    Anda juga dapat menentukan zona waktu dalam pernyataan dengan menggunakan set odps.sql.timezone=xxx.

    Urutan prioritas: Pernyataan > proyek > null.

    disableConnectionSetting

    disable_connection_setting

    Tidak

    Menentukan apakah akan mengizinkan pengaturan parameter SQL untuk koneksi. Nilai yang valid:

    • False (default): Tidak diizinkan.

    • True: Diizinkan.

    Saat parameter ini diatur ke true, perintah set xxx berlaku untuk pernyataan maupun koneksi. Jika tidak, hanya berlaku untuk pernyataan.

    settings

    settings

    Tidak

    String JSON untuk sql setting default global. Contoh: {"key":"value"}.

    tableList

    table_list

    Tidak

    Nama tabel MaxCompute. Format: projectname.tablename,projectname1.tablename1.

    connectTimeout

    connect_timeout

    Tidak

    Timeout untuk membangun koneksi jaringan. Nilai default: 10 detik (s).

    readTimeout

    read_timeout

    Tidak

    Timeout untuk membaca data dari koneksi jaringan. Nilai default: 120 detik (s).

    Catatan
    • Total timeout untuk setiap permintaan API RESTful adalah jumlah dari connectTimeout dan readTimeout, yang secara default 130 detik. Driver mencoba ulang setiap permintaan hingga 3 kali.

    • Untuk menyesuaikan timeout koneksi untuk permintaan API RESTful, ubah parameter readTimeout.

    enableCommandApi

    enable_command_api

    Tidak

    Menentukan apakah akan menggunakan command API. Nilai yang valid:

    • False (default): Command API tidak digunakan.

    • True: Command API digunakan.

      Saat diaktifkan, Anda dapat menjalankan perintah di JDBC yang biasanya eksklusif untuk odpscmd.

    httpsCheck

    https_check

    Tidak

    Menentukan apakah akan melakukan verifikasi sertifikat HTTPS. Nilai yang valid:

    • False (default): Verifikasi tidak dilakukan.

    • True: Verifikasi dilakukan.

    tunnelConnectTimeout

    tunnel_connect_timeout

    Tidak

    Periode timeout koneksi untuk Tunnel saat Anda mengunduh data. Nilai default: 180 detik (s).

    tunnelReadTimeout

    tunnel_read_timeout

    Tidak

    Periode timeout baca untuk Tunnel saat Anda mengunduh data. Nilai default: 300 detik (s).

    skipCheckIfSelect

    skipCheckIfSelect

    Tidak

    Menentukan apakah akan melewati parsing SQL. Nilai yang valid:

    • False (default): Tidak melewati parsing.

    • True: Melewati parsing.

    Catatan

    Melewati parsing dapat mengurangi konsumsi CPU dan memori di sisi klien, tetapi dapat meningkatkan latensi untuk pernyataan non-SELECT.

  • Parameter non-MCQA (hanya berlaku dalam mode offline)

    Kunci URL

    Kunci properti

    Wajib

    Deskripsi

    autoLimitFallback

    auto_limit_fallback

    Tidak

    Fallback batas otomatis. Nilai yang valid:

    • False (default): Tidak melakukan fallback.

    • True: Melakukan fallback. Dalam mode offline, ketika Tunnel melaporkan pengecualian no download permission, driver secara otomatis melakukan fallback dan membatasi jumlah catatan yang diunduh menjadi 10.000.

  • Parameter MaxQA/MCQA 1.0 (hanya berlaku untuk MaxQA/MCQA 1.0)

    • Konfigurasi dasar

    • Kunci URL

      Kunci properti

      Wajib

      Deskripsi

      interactiveMode

      interactive_mode

      Tidak

      Menentukan apakah akan mengaktifkan MaxQA/MCQA 1.0. Nilai yang valid:

      • False (default): Dinonaktifkan.

      • True: Diaktifkan.

      executeProject

      execute_project_name

      Tidak

      Nama proyek MaxCompute tempat tugas SQL benar-benar dijalankan.

      tunnelRetryTime

      tunnel_retry_time

      Tidak

      Jumlah percobaan ulang Tunnel untuk SQLExecutor. Nilai default: 6.

      attachTimeout

      attach_timeout

      Tidak

      Periode timeout untuk membangun koneksi MCQA 1.0. Nilai default: 60 detik (s).

      fallbackQuota

      fallback_quota

      Tidak

      Kuota yang digunakan saat pekerjaan MCQA 1.0 melakukan fallback. Jika tidak dikonfigurasi, kuota default proyek akan digunakan.

      quotaName

      quota_name

      Tidak

      Kuota sumber daya komputasi yang digunakan oleh pekerjaan MaxQA.

    • Parameter terkait batas

      Kunci URL

      Kunci properti

      Wajib

      Deskripsi

      instanceTunnelMaxRecord

      instance_tunnel_max_record

      Tidak

      Jumlah maksimum catatan dalam set hasil.

      Catatan

      Parameter ini hanya berlaku saat parameter enableLimit diatur ke False.

      instanceTunnelMaxSize

      instance_tunnel_max_size

      Tidak

      Ukuran maksimum set hasil. Satuan: byte.

      autoSelectLimit

      auto_select_limit

      Tidak

      Batas kueri otomatis.

      Secara default, Anda dapat mengkueri maksimal 1.000.000 baris di lingkungan cloud publik Alibaba Cloud. Untuk mengkueri lebih banyak data, Anda dapat mengonfigurasi parameter ini.

      Catatan
      • Parameter ini hanya berlaku saat parameter enableLimit diatur ke False.

      • Untuk JDBC V3.2.29 dan versi yang lebih baru, jika Anda mengatur parameter autoSelectLimit, parameter enableLimit secara otomatis diatur ke False.

      enableLimit

      enable_limit

      Tidak

      Menentukan apakah akan mengaktifkan batas. Nilai yang valid:

      • False: Batas tidak diaktifkan.

      • True (default): Batas diaktifkan.

        Jika diaktifkan, izin unduh tidak diperiksa, dan set hasil dibatasi hingga 10.000 catatan secara default.

    • Parameter terkait fallback

      Kunci URL

      Kunci properti

      Wajib

      Deskripsi

      fallbackForUnknownError

      fallback_for_unknownerror

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline saat terjadi error yang tidak dikenal. Nilai yang valid:

      • False: Tidak melakukan fallback.

      • True (default): Melakukan fallback.

      fallbackForResourceNotEnough

      fallback_for_resourcenotenough

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline saat sumber daya tidak mencukupi. Nilai yang valid:

      • False: Tidak melakukan fallback.

      • True (default): Melakukan fallback.

      fallbackForUpgrading

      fallback_for_upgrading

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline selama proses upgrade. Nilai yang valid:

      • False: Tidak melakukan fallback.

      • True (default): Melakukan fallback.

      fallbackForRunningTimeout

      fallback_for_runningtimeout

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline saat perintah operasi mengalami timeout. Nilai yang valid:

      • False: Tidak melakukan fallback.

      • True (default): Melakukan fallback.

      fallbackForUnsupportedFeature

      fallback_for_unsupported_feature

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline saat menggunakan fitur MCQA yang tidak didukung. Nilai yang valid:

      • False: Tidak melakukan fallback.

      • True (default): Melakukan fallback.

      alwaysFallback

      always_fallback

      Tidak

      Menentukan apakah akan melakukan fallback ke mode offline dalam semua skenario di atas. Nilai yang valid:

      • False (default): Tidak melakukan fallback.

      • True: Melakukan fallback.

      Catatan

      Parameter ini hanya didukung di JDBC V3.2.3 dan versi yang lebih baru.

      disableFallback

      disable_fallback

      Tidak

      Menentukan apakah akan menonaktifkan fallback ke mode offline dalam semua skenario di atas. Nilai yang valid:

      • False (default): Melakukan fallback.

      • True: Tidak melakukan fallback.

      fallbackQuota

      fallback_quota

      Tidak

      Nama kuota tempat pekerjaan MCQA melakukan fallback. Jika tidak dikonfigurasi, kuota default proyek akan digunakan.

Menghubungkan ke MaxCompute

  1. Memuat driver JDBC MaxCompute.

    Class.forName("com.aliyun.odps.jdbc.OdpsDriver");
  2. Membuat koneksi menggunakan DriverManager.

    Connection cnct = DriverManager.getConnection(url, accessId, accessKey);
    • url: URL harus dalam format berikut: jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_project_name>[&useProjectTimeZone={true|false}]. Parameter dijelaskan sebagai berikut:

      • <maxcompute_endpoint>: Titik akhir layanan MaxCompute untuk wilayah tersebut. Misalnya, titik akhir publik untuk wilayah China (Hangzhou) adalah http://service.cn-hangzhou.maxcompute.aliyun.com/api. Untuk informasi selengkapnya, lihat Titik akhir.

      • <maxcompute_project_name>: Nama proyek MaxCompute.

      • useProjectTimeZone: Menentukan apakah akan menggunakan zona waktu proyek MaxCompute.

      Contoh:

      jdbc:odps:http://service.cn-hangzhou.maxcompute.aliyun.com/api?project=test_project&useProjectTimeZone=true;
    • accessId: ID AccessKey Akun Alibaba Cloud Anda.

    • accessKey: Rahasia AccessKey yang sesuai dengan ID AccessKey tersebut.

      Catatan

      Untuk membuat dan melihat ID AccessKey serta rahasia AccessKey, lihat Menyiapkan Akun Alibaba Cloud.

  3. Menjalankan kueri.

    try (
        Statement stmt = cnct.createStatement();
        ResultSet rset = stmt.executeQuery("SELECT foo FROM bar;")
    ) {
        while (rset.next()) {
          // proses hasilnya
        }
    } catch (SQLException e) {
      // tangani pengecualian
    } finally {
        if (cnct != null) {
            try {
                cnct.close();
            } catch (SQLException e) {
                // Abaikan atau catat pengecualian closed
            }
        }
    }

Contoh kode

  • Menghapus tabel, membuat tabel, dan mendapatkan metadata

    Catatan

    Jika Anda menambahkan dependensi JDBC ke proyek Anda, jangan menambahkan dependensi SDK secara terpisah. Dependensi JDBC sudah mencakup SDK yang diperlukan, dan menambahkannya secara terpisah dapat menyebabkan error ketidakcocokan versi.

    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Main {
    
        private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver";
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API, yang merupakan risiko keamanan. Kami sangat menyarankan menggunakan Pengguna RAM untuk akses API atau O&M rutin. Untuk membuat Pengguna RAM, login ke Konsol RAM.
        // Contoh ini menyimpan ID AccessKey dan Rahasia AccessKey dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda.
        // Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey dalam kode Anda.
        private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
            try {
                Class.forName(DRIVER_NAME);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(1);
            }
    
            try (
                Connection conn = DriverManager.getConnection(
                    "jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_project>",
                    Main.accessId, Main.accessKey);
                Statement stmt = conn.createStatement()
            ) {
                // membuat tabel
                final String tableName = "jdbc_test";
                stmt.execute("DROP TABLE IF EXISTS " + tableName);
                stmt.execute("CREATE TABLE " + tableName + " (key BIGINT, value STRING)");
    
                // mendapatkan metadata
                DatabaseMetaData metaData = conn.getMetaData();
                System.out.println("product = " + metaData.getDatabaseProductName());
                System.out.println("jdbc version = "
                                   + metaData.getDriverMajorVersion() + ", "
                                   + metaData.getDriverMinorVersion());
    
                try (ResultSet tables = metaData.getTables(null, "default", tableName, null)) {
                    while (tables.next()) {
                        String name = tables.getString("TABLE_NAME");
                        System.out.println("inspecting table: " + name);
    
                        try (ResultSet columns = metaData.getColumns(null, null, name, null)) {
                            while (columns.next()) {
                                System.out.println(
                                    columns.getString("COLUMN_NAME") + "\t" +
                                    columns.getString("TYPE_NAME") + "(" +
                                    columns.getInt("DATA_TYPE") + ")");
                            }
                        }
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    Contoh output:

    product = MaxCompute/ODPS
    jdbc version = 3, 8
    inspecting table: jdbc_test
    key    BIGINT(-5)
    value    STRING(12)
  • Memperbarui tabel

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Main {
    
        private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver";
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API, yang merupakan risiko keamanan. Kami sangat menyarankan menggunakan Pengguna RAM untuk akses API atau O&M rutin. Untuk membuat Pengguna RAM, login ke Konsol RAM.
        // Contoh ini menyimpan ID AccessKey dan Rahasia AccessKey dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda.
        // Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey dalam kode Anda.
        private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
            try {
                Class.forName(DRIVER_NAME);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(1);
            }
    
            try (
                Connection conn = DriverManager.getConnection(
                    "jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_project>",
                    Main.accessId, Main.accessKey);
                Statement stmt = conn.createStatement()
            ) {
                // DML berikut juga berfungsi
                // String dml = "INSERT INTO jdbc_test SELECT 1, \"foo\"";
                String dml = "INSERT INTO jdbc_test VALUES(1, \"foo\")";
                int ret = stmt.executeUpdate(dml);
    
                assert ret == 1;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  • Memperbarui tabel secara batch

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class Main {
    
        private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver";
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API, yang merupakan risiko keamanan. Kami sangat menyarankan menggunakan Pengguna RAM untuk akses API atau O&M rutin.
        // Contoh ini menyimpan ID AccessKey dan Rahasia AccessKey dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda.
        // Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey dalam kode Anda.
        private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
            try {
                Class.forName(DRIVER_NAME);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(1);
            }
    
            try (
                Connection conn = DriverManager.getConnection(
                    "jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_project>",
                    Main.accessId, Main.accessKey);
                PreparedStatement pstmt = conn.prepareStatement("INSERT INTO jdbc_test VALUES(?, ?)")
            ) {
                // Batch pertama
                pstmt.setLong(1, 1L);
                pstmt.setString(2, "foo");
                pstmt.addBatch();
    
                // Batch kedua
                pstmt.setLong(1, 2L);
                pstmt.setString(2, "bar");
                pstmt.addBatch();
    
                int[] ret = pstmt.executeBatch();
    
                assert ret[0] == 1;
                assert ret[1] == 1;
    
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Catatan
    • Metode executeBatch tidak mendukung penulisan batch ke tabel terkluster, seperti tabel Transaction Table 2.0.

    • Untuk menulis data ke tabel partisi standar secara batch, Anda harus menentukan partisi target dalam pernyataan INSERT INTO. Contoh:

      -- Pernyataan pembuatan tabel untuk tabel partisi sale_detail adalah sebagai berikut.
      create table if not exists sale_detail
      (
      shop_name string,
      customer_id string,
      total_price double
      )
      partitioned by (sale_date string, region string);
      
      -- Asumsikan bahwa partisi sale_date='20240219', region='hangzhou' sudah ada. Pernyataan INSERT INTO untuk penulisan batch ke tabel partisi adalah sebagai berikut.
      INSERT INTO sale_detail PARTITION(sale_date='20240219', region='hangzhou') VALUES(?, ?, ?)
  • Kueri Tabel

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Main {
    
        private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver";
        // Pasangan Kunci Akses Akun Alibaba Cloud memiliki izin untuk semua operasi API, yang merupakan risiko keamanan. Kami sangat menyarankan menggunakan Pengguna RAM untuk akses API atau O&M rutin.
        // Contoh ini menyimpan ID AccessKey dan Rahasia AccessKey dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda.
        // Untuk keamanan, jangan hardcode ID AccessKey dan Rahasia AccessKey dalam kode Anda.
        private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
            try {
                Class.forName(DRIVER_NAME);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                System.exit(1);
            }
    
            try (
                Connection conn = DriverManager.getConnection(
                    "jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_project>",
                    accessId, accessKey);
                Statement stmt = conn.createStatement();
                ResultSet rset = stmt.executeQuery("SELECT * FROM JDBC_TEST")
            ) {
                while (rset.next()) {
                    System.out.println(rset.getInt(1) + "\t" + rset.getString(2));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Catatan

    OdpsStatement mendukung tiga metode: execute(sql), executeQuery(sql), dan executeUpdate(sql). Metode execute(sql) dan executeQuery(sql) juga mendukung tiga perintah umum: desc table, show tables, dan show partitions.