All Products
Search
Document Center

DataWorks:AnalyticDB for PostgreSQL

Last Updated:Mar 01, 2026

Sumber data AnalyticDB for PostgreSQL memungkinkan Anda membaca dan menulis data ke AnalyticDB for PostgreSQL. Topik ini menjelaskan kemampuan sinkronisasi data untuk AnalyticDB for PostgreSQL di DataWorks.

Batasan

Tugas sinkronisasi offline mendukung pembacaan data dari view.

Versi yang didukung

Versi hingga dan termasuk 7.0 didukung.

Tipe field yang didukung

Baca offline

AnalyticDB for PostgreSQL Reader mendukung sebagian besar, namun tidak semua, tipe data AnalyticDB for PostgreSQL. Pastikan tipe data Anda didukung sebelum melanjutkan.

Tabel berikut mencantumkan pemetaan tipe data untuk AnalyticDB for PostgreSQL Reader.

Kategori

Tipe data AnalyticDB for PostgreSQL

Tipe integer

BIGINT, BIGSERIAL, INTEGER, SMALLINT, SERIAL, dan GEOMETRY

Tipe bilangan titik mengambang

DOUBLE, PRECISION, MONEY, NUMERIC, dan REAL

Tipe string

VARCHAR, CHAR, TEXT, BIT, dan INET

Tipe tanggal dan waktu

DATE, TIME, dan TIMESTAMP

Tipe Boolean

BOOL

Tipe biner

BYTEA

Tulis offline

AnalyticDB for PostgreSQL Writer mendukung sebagian besar, namun tidak semua, tipe data AnalyticDB for PostgreSQL. Pastikan tipe data Anda didukung sebelum melanjutkan.

Tabel berikut mencantumkan pemetaan tipe data untuk AnalyticDB for PostgreSQL Writer.

Kategori

Tipe data AnalyticDB for PostgreSQL

LONG

BIGINT, BIGSERIAL, INTEGER, SMALLINT, dan SERIAL

DOUBLE

DOUBLE, PRECISION, MONEY, NUMERIC, dan REAL

STRING

VARCHAR, CHAR, TEXT, BIT, INET, dan GEOMETRY

DATE

DATE, TIME, dan TIMESTAMP

BOOLEAN

BOOL

BYTES

BYTEA

Catatan

Gunakan sintaks seperti a_inet::varchar untuk mengonversi tipe data MONEY, INET, dan BIT.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk dalam Manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data

Untuk informasi mengenai titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Panduan konfigurasi tugas sinkronisasi offline untuk satu tabel

Panduan konfigurasi tugas sinkronisasi baca offline untuk seluruh database

Untuk informasi lebih lanjut, lihat Konfigurasikan tugas sinkronisasi real-time untuk seluruh database.

Lampiran: Contoh skrip dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip sesuai dengan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Contoh skrip Reader

{
    "type": "job",
    "steps": [
        {
            "parameter": {
                "datasource": "test_004",// Nama sumber data.
                "column": [// Kolom dari tabel sumber.
                    "id",
                    "name",
                    "sex",
                    "salary",
                    "age"
                ],
                "where": "id=1001",// Kondisi filter.
                "splitPk": "id",// Kunci pemisahan.
                "table": "public.person"// Nama tabel sumber.
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {},
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",// Nomor versi.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// Jumlah catatan error.
            "record": ""
        },
        "speed": {
            "concurrent": 6,// Jumlah thread konkuren.
            "throttle": true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
           "mbps":"12"// Batasan laju. 1 mbps setara dengan 1 MB/s.
        }
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Nama tabel dari mana Anda ingin menyinkronkan data.

Ya

Tidak ada

column

Kolom yang ingin Anda sinkronkan. Gunakan array JSON untuk menentukan kolom. Secara default, semua kolom disinkronkan. Contoh: [*].

  • Pemangkasan kolom didukung. Anda dapat mengekspor subset kolom.

  • Pengubahan urutan kolom didukung. Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Konstanta didukung. Anda harus mengikuti sintaks SQL. Contoh: ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2.3","true"].

    • id adalah nama kolom biasa.

    • table adalah nama kolom yang merupakan kata tercadang.

    • 1 adalah konstanta integer.

    • 'mingya.wmy' adalah konstanta string. Perhatikan bahwa konstanta string harus diapit tanda kutip tunggal.

    • 'null' adalah konstanta string.

    • to_char(a+1) adalah fungsi.

    • 2.3 adalah bilangan titik mengambang.

    • true adalah Nilai Boolean.

  • Parameter column wajib diisi. Anda harus menentukan kolom yang akan disinkronkan.

Ya

Tidak ada

splitPk

Saat AnalyticDB for PostgreSQL Reader mengekstrak data, jika Anda menentukan parameter splitPk, data dipartisi berdasarkan kunci pemisahan yang ditentukan. Data Integration memulai tugas konkuren untuk menyinkronkan data, yang meningkatkan performa sinkronisasi.

  • Gunakan primary key tabel sebagai kunci pemisahan. Primary key biasanya terdistribusi merata dan dapat mencegah hotspot data di shard.

  • Parameter splitPk hanya mendukung partisi data berbasis integer. Tidak mendukung partisi berdasarkan string, bilangan titik mengambang, atau tanggal. Jika Anda menentukan tipe data yang tidak didukung, kunci pemisahan diabaikan dan data disinkronkan dalam satu channel.

  • Jika Anda tidak menentukan parameter splitPk, atau parameternya kosong, data disinkronkan dalam satu channel.

Tidak

Tidak ada

where

Kondisi filter. AnalyticDB for PostgreSQL Reader membuat pernyataan SQL berdasarkan parameter column, table, dan where yang ditentukan untuk mengekstrak data. Misalnya, untuk menyinkronkan data yang dihasilkan pada hari ini untuk pengujian, Anda dapat mengatur parameter where menjadi id>2 and sex=1.

  • Gunakan klausa where untuk sinkronisasi data inkremental yang efisien.

  • Jika Anda tidak menentukan parameter ini atau membiarkannya kosong, semua data dalam tabel disinkronkan.

Tidak

Tidak ada

querySql (Parameter ini hanya tersedia di editor kode.)

Dalam beberapa skenario bisnis, item konfigurasi where tidak cukup untuk mendefinisikan kondisi filter. Anda dapat menggunakan item konfigurasi ini untuk menentukan pernyataan SQL kustom. Saat Anda menentukan pernyataan kustom ini, sistem sinkronisasi data mengabaikan item konfigurasi lain seperti column dan table, dan langsung menggunakan pernyataan Anda untuk memfilter data. Misalnya, untuk menyinkronkan data setelah penggabungan tabel ganda, gunakan pernyataan seperti select a,b from table_a join table_b on table_a.id = table_b.id.

Saat Anda mengonfigurasi querySql, AnalyticDB for PostgreSQL Reader langsung mengabaikan konfigurasi untuk column, table, dan kondisi where.

Tidak

Tidak ada

fetchSize

Parameter ini menentukan jumlah catatan yang diambil dalam setiap batch dari server database. Nilai yang lebih besar mengurangi jumlah interaksi jaringan antara Data Integration dan server, yang dapat meningkatkan performa ekstraksi data.

Catatan

Jika nilai fetchSize terlalu besar (lebih dari 2048), error kehabisan memori (OOM) dapat terjadi dalam proses Data Integration.

Tidak

512

Contoh skrip Writer

{
    "type": "job",
    "steps": [
        {
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "parameter": {
                "postSql": [],// Pernyataan SQL yang dieksekusi setelah impor.
                "datasource": "test_004",// Nama sumber data.
                "column": [// Kolom dari tabel target.
                    "id",
                    "name",
                    "sex",
                    "salary",
                    "age"
                ],
                "table": "public.person",// Nama tabel target.
                "preSql": []// Pernyataan SQL yang dieksekusi sebelum impor.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",// Nomor versi.
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {// Jumlah catatan error.
            "record": ""
        },
        "speed": {
            "throttle":true,// Jika Anda mengatur throttle ke false, parameter mbps tidak berlaku dan tidak ada batasan laju. Jika Anda mengatur throttle ke true, batasan laju diterapkan.
            "concurrent":6, // Jumlah pekerjaan konkuren.
            "mbps":"12"// Batasan laju.
        }
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

table

Nama tabel ke mana Anda ingin menyinkronkan data.

Ya

Tidak ada

writeMode

Mode impor. Nilai yang valid: insert, copy, dan upsert.

  • insert: Menjalankan pernyataan insert into...values... untuk menulis data ke PostgreSQL. Mode ini direkomendasikan.

  • copy: PostgreSQL menyediakan perintah copy untuk menyalin data antara tabel dan file (standard output atau standard input). Data Integration menggunakan perintah copy from untuk memuat data ke dalam tabel. Gunakan mode ini jika Anda mengalami masalah performa.

  • upsert: Jika terjadi konflik data selama operasi tulis, konflik tersebut ditangani berdasarkan nilai parameter conflictMode.

Tidak

insert

conflictMode

Jika Anda mengatur writeMode ke upsert dan terjadi konflik primary key atau unique index saat data ditulis ke PostgreSQL, Anda dapat memilih salah satu kebijakan resolusi konflik berikut:

  • replace: Jika terjadi konflik, data baru menimpa data yang ada.

  • ignore: Jika terjadi konflik, data baru diabaikan dan data yang ada dipertahankan.

Catatan

Anda hanya dapat mengonfigurasi kebijakan resolusi konflik di editor kode.

Tidak

replace

column

Kolom dalam tabel target ke mana Anda ingin menulis data. Pisahkan kolom dengan koma (,). Contoh: "column":["id","name","age"]. Untuk menulis data ke semua kolom secara berurutan, gunakan tanda bintang (*). Contoh: "column":["*"].

Ya

Tidak ada

preSql

Pernyataan SQL yang dieksekusi sebelum tugas sinkronisasi data dimulai. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL, seperti pernyataan untuk menghapus data yang ada.

Tidak

Tidak ada

postSql

Pernyataan SQL yang dieksekusi setelah tugas sinkronisasi data selesai. Di Antarmuka tanpa kode, Anda hanya dapat menjalankan satu pernyataan SQL. Di editor kode, Anda dapat menjalankan beberapa pernyataan SQL, seperti pernyataan untuk menambahkan timestamp.

Tidak

Tidak ada

batchSize

Jumlah catatan yang ditulis dalam satu batch. Nilai yang lebih besar dapat secara signifikan mengurangi jumlah interaksi jaringan antara Data Integration dan AnalyticDB for PostgreSQL serta meningkatkan throughput. Namun, jika nilai ini terlalu besar, error OOM dapat terjadi dalam proses Data Integration.

Tidak

1.024