Tentukan kondisi SQL selama konfigurasi objek task untuk menyinkronkan atau memigrasikan hanya data yang memenuhi kondisi tersebut. Fitur ini berlaku untuk skenario sinkronisasi data periodik, migrasi, dan pemisahan tabel.
Prasyarat
Anda telah memulai konfigurasi task dan mencapai langkah Configure Objects and Advanced Settings. Untuk memulai konfigurasi task, ikuti Configure a data synchronization task (new console).
Batasan
Pernyataan filter kompleks tidak didukung. Contohnya,
COLUMN1 IN (SELECT id FROM table1).COLUMN1 IN (SELECT id FROM table1).
Jika tabel atau koleksi sumber berisi dua kolom yang namanya hanya berbeda dalam kapitalisasi huruf, task filter mungkin gagal menghasilkan hasil yang diharapkan.
Jika terdapat kolom yang namanya hanya berbeda dalam hal kapitalisasi, tugas filter mungkin gagal menghasilkan hasil yang diharapkan.
Ketika tipe database sumber adalah Tair/Redis, hanya filtering kunci berbasis awalan yang didukung.
, hanya penyaringan kunci berbasis prefiks yang didukung.
Ketika tipe database sumber adalah MongoDB, hanya task sinkronisasi atau migrasi penuh yang mendukung filtering kondisional. Sinkronisasi atau migrasi inkremental tidak didukung.
Tugas sinkronisasi atau migrasi mendukung pemfilteran bersyarat. Sinkronisasi atau migrasi inkremental tidak didukung.
Ketika tipe database sumber adalah database selain Tair/Redis dan MongoDB, jika kondisi filter memerlukan tanda kutip, gunakan tanda kutip tunggal (').
833fe828ef", jika kondisi filter memerlukan tanda kutip, gunakan tanda kutip tunggal (').
Jangan menambahkan titik koma (;) di akhir kondisi filter. Jika tidak, task mungkin gagal.
akhir dari kondisi filter. Jika tidak, tugas tersebut dapat gagal.
Jika operasi UPDATE dilakukan pada database sumber dan operasi tersebut memenuhi kondisi tertentu (nilai pra-gambar memenuhi kondisi filter, tetapi nilai post-image tidak), DTS secara default mengonversi pernyataan UPDATE menjadi pernyataan DELETE dan mengeksekusinya di database tujuan.
PentingPada instans DTS yang database sumbernya adalah SQL Server, jika bidang filter bukan kolom indeks terkluster, logika filter tidak berlaku.
Mekanisme filter DTS bersifat pre-filtering. Jika nilai bidang filter yang dikonfigurasi diubah, filtering dilakukan berdasarkan nilai sebelum perubahan.
Contoh: Asumsikan Anda mengonfigurasi kondisi filter
enabled = 1. DTS hanya akan menyinkronkan data yang memenuhi kondisi filter ini. Jika bidang dataenabled = 1diubah menjadienabled = 0, sistem menganggap ini sebagai penghapusan dataenabled = 1terlebih dahulu, lalu menulis dataenabled = 0. Karena operasi sebelumnya memenuhi kondisi filter, data tersebut akan dihapus; namun, data berikutnya tidak akan disinkronkan karena tidak memenuhi kondisi filter. Jika Anda perlu menyinkronkan dataenabled = 0danenabled = 1, hapus kondisi filter dan lakukan sinkronisasi ulang.
Prosedur
Metode konfigurasi kondisi filter bergantung pada tipe database sumber. Terdapat tiga kategori: Tair/Redis, MongoDB, dan tipe database lainnya.
Konfigurasi kondisi filter untuk objek individual
Pada langkah Configure Objects, pindahkan objek task ke area Selected Objects.
CatatanKetika tipe database sumber adalah MongoDB, granularitas objek task harus berada pada level koleksi. Ketika tipe database sumber adalah Tair/Redis, granularitas harus berada pada level Redis DB. Ketika database sumber bertipe lain, granularitas harus berada pada level tabel.
Klik kanan objek target.
Pada kotak dialog yang muncul, masukkan kondisi filter.
Ketika tipe database sumber adalah Tair/Redis: Pada kotak dialog Edit Schema yang muncul, masukkan Prefixes of Keys to Be Synchronized (allowlist) atau Prefixes of Keys to Be Filtered Out (blocklist).
Ketika tipe database sumber adalah MongoDB: Pada kotak dialog Edit Table yang muncul, masukkan Filter Conditions.
Ketika tipe database sumber adalah tipe lain: Pada kotak dialog Edit Table yang muncul, masukkan Filter Conditions.
CatatanUntuk informasi tentang sintaksis kondisi filter, lihat Sample statements.
Setelah menyelesaikan pengaturan, klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya.
Konfigurasi kondisi filter secara batch
Pada langkah Configure Objects, pindahkan objek task ke area Selected Objects.
Di pojok kanan atas area Selected Objects, klik Batch Edit.
Pada kotak Select Objects, pilih objek yang akan diedit (untuk mengatur kondisi filter awalan).
CatatanPertahankan nilai default untuk Select Type.
Pada area Select Editing Type, klik tab Filter Conditions.
CatatanJika tipe database sumber adalah Tair/Redis, klik tab Prefixes of Keys to Be Synchronized/Filtered Out.
Pilih Select Edit Mode.
Add: Pertahankan kondisi filter yang ada pada task saat ini dan tambahkan kondisi filter baru.
Overwrite: Hapus kondisi filter yang ada pada task saat ini dan gunakan kondisi filter baru.
Konfigurasi kondisi filter.
Ketika tipe database sumber adalah Tair/Redis: Berdasarkan skenario aktual, pilih Prefixes of Keys to Be Synchronized atau Prefixes of Keys to Be Filtered Out, lalu masukkan awalan yang sesuai.
Ketika tipe database sumber adalah MongoDB: Pada kotak teks, masukkan kondisi filter.
Ketika tipe database sumber adalah tipe lain: Pada kotak teks, masukkan kondisi filter.
CatatanUntuk informasi tentang sintaksis kondisi filter, lihat Sample statements.
Setelah menyelesaikan pengaturan, klik OK.
Ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya.
Contoh pernyataan
Tipe database sumber adalah Tair/Redis
Jenis filter | Contoh pernyataan | Deskripsi |
Sinkronisasi satu awalan | Masukkan Prefixes of Keys to Be Synchronized: | Hanya sinkronkan data yang kuncinya diawali dengan |
Filter satu awalan | Masukkan Prefixes of Keys to Be Filtered Out: | Filter data yang kuncinya diawali dengan |
Sinkronisasi beberapa awalan | Masukkan Prefixes of Keys to Be Synchronized: | Hanya sinkronkan data yang kuncinya diawali dengan |
Gabungkan sinkronisasi dan filter | Masukkan Prefixes of Keys to Be Synchronized: Masukkan Prefixes of Keys to Be Filtered Out: | Hanya sinkronkan data yang kuncinya diawali dengan |
Tipe database sumber adalah MongoDB
Jenis filter | Contoh pernyataan | Deskripsi |
Lainnya |
| Filter berdasarkan ID pengguna, di mana |
Database sumber bertipe lain
Filter Conditions mendukung operator berikut:
=,!=,<,>, danin.Jika Anda memiliki pertanyaan saat memasukkan kondisi filter, pertama-tama lihat FAQ.
Contoh pernyataan
Jenis filter | Contoh pernyataan | Deskripsi |
Numerik |
| Hanya sinkronkan atau migrasikan data yang bidang |
String |
| Hanya sinkronkan atau migrasikan data yang bidang |
Waktu |
| Hanya sinkronkan atau migrasikan data yang dibuat setelah tahun 2020. Penting
|
Tipe yang didukung
Database | Tipe data yang didukung |
PostgreSQL | CHAR,BIGINT,SMALLINT,INTEGER,FLOAT4,FLOAT8,VARCHAR,DATE,TIMESTAMP,NUMERIC |
Oracle | VARCHAR2,NVARCHAR2,NUMBER,DATE,ROWID,CHAR,BINARY_FLOAT,BINARY_DOUBLE,CLOB,NCLOB,TIMESTAMP,TIMESTAMP WITH TIME ZONE,UROWID |
MySQL | DECIMAL,INTEGER,BIGINT,FLOAT4,DOUBLE,DATE,TIME,DATETIME,YEAR,VARCHAR |
SQL Server | NCHAR,DATE,TIME,DATETIME2,TINYINT,SMALLINT,INT,SMALLDATETIME,REAL,DECIMAL,DATETIME,FLOAT,BIT,NUMERIC,BIGINT,VARCHAR,CHAR,TIMESTAMP,NVARCHAR,MONEY,SMALLMONEY,UNIQUEIDENTIFIER |
DB2 LUW | SMALLINT,INTEGER,BIGINT,DECIMAL,NUMERIC,REAL,FLOAT,DOUBLE,DECFLOAT,CHAR,CHARACTER,VARCHAR,GRAPHIC,NCHAR,VARGRAPHIC,NVARCHAR,DATE,TIME,TIMESTAMP,BLOB,CLOB,DBCLOB,LONG VARG,LONG VARCHAR,LONG VARGRAPHIC,BINARY,VARBINARY,XML |
DB2 AS400 | BIGINT,INTEGER,SMALLINT,DECIMAL,NUMERIC,FLOAT,DECFLOAT,CHAR,VARCHAR,NCHAR,BINARY,DATE,TIME,TIMESTAMP,XML |
Operasi lanjutan
Lihat pernyataan filter
Task saat ini belum dikonfigurasi: Kembali ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk melihat Filter Conditions.
Task saat ini telah dikonfigurasi dan sedang berjalan: Anda dapat menggunakan fitur Create Similar Task atau Modify Sync Objects untuk masuk ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk melihat Filter Conditions (setelah melihat, batalkan task; tidak perlu melanjutkan). Untuk informasi selengkapnya, lihat Create a similar job dan Modify synchronization objects.
Modifikasi pernyataan filter
Task saat ini belum dikonfigurasi: Kembali ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan atau dimigrasikan, lalu klik kanan objek target untuk memodifikasi Filter Conditions.
Task saat ini telah dikonfigurasi dan sedang berjalan:
Task migrasi: Task migrasi tidak mendukung modifikasi kondisi filter. Anda perlu mengonfigurasi ulang task.
Task sinkronisasi: Gunakan fitur Modify Sync Objects untuk masuk ke langkah Configure Objects and Advanced Settings. Di area Selected Objects, buka objek yang akan disinkronkan, lalu klik kanan objek target untuk memodifikasi Filter Conditions, dan ikuti petunjuk untuk menyelesaikan konfigurasi task selanjutnya. Untuk informasi selengkapnya, lihat Modify synchronization objects.
Error umum
Jika kondisi filter yang Anda masukkan salah, task mungkin mengembalikan error berikut. Perbaiki error berdasarkan pesan error spesifik dan Operasi lanjutan.
Ekspresi reguler ((.*)?) dalam pesan error merepresentasikan variabel.
Kode error | Pesan error | Deskripsi |
DTS-RETRY-ERR-0070 | In process of processing data (.*)? failed (.*)? Syntax error in SQL statement | Format bidang filter yang dikonfigurasi untuk objek sinkronisasi salah. |
DTS-RETRY-ERR-0145 | Unknown column (.*)? in | Bidang yang dikonfigurasi dalam kondisi filter task saat ini tidak ada di database sumber. |
DTS-RETRY-ERR-0147 | You have an error in your SQL syntax | Bidang yang dikonfigurasi dalam kondisi filter task saat ini tidak ada di database sumber. |
DTS-RETRY-ERR-0188 | null value in column (.*)? violates not-null constraint | Kolom dengan kendala NOT NULL di tujuan difilter keluar, atau sumber tidak memiliki nilai kolom yang sesuai. |
DTS-RETRY-ERR-0276 | if (.*)? is specified it must not be empty | Nilai yang dipetakan ke kolom |
FAQ
Mengapa kondisi filter yang saya masukkan tidak berlaku?
Pernyataan kondisi filter salah, atau task saat ini merupakan task inkremental dengan database sumber MongoDB (yang tidak mendukung kondisi filter).
Apa cakupan efektif setelah saya memodifikasi kondisi filter?
Task saat ini belum dikonfigurasi: Ketika database sumber adalah MongoDB, kondisi filter hanya berlaku pada fase task penuh. Ketika database sumber bertipe lain, kondisi filter berlaku pada fase task penuh dan inkremental.
Task saat ini telah dikonfigurasi dan sedang berjalan: Ketika database sumber adalah MongoDB, kondisi filter tidak berlaku (tidak didukung). Ketika database sumber bertipe lain, kondisi filter hanya berlaku untuk data inkremental.
Apakah DTS mendukung filtering data yang memenuhi kondisi tertentu dan menyinkronkan atau memigrasikan data sisanya ke tujuan?
Ketika tipe database sumber adalah Tair/Redis: Ya. Anda dapat memasukkan Prefixes of Keys to Be Filtered Out untuk memfilter kunci yang memenuhi kondisi.
Ketika database sumber bertipe lain: Tidak. Anda dapat mengatur kondisi filter kebalikannya untuk memenuhi kebutuhan Anda. Misalnya, jika Anda perlu memfilter data yang bidang
age-nya bernilai 25, Anda dapat memasukkanage > 25 or age < 25di Filter Conditions.
Bagaimana cara memasukkan kondisi filter jika terdapat beberapa kunci yang perlu difilter?
Gunakan koma (,) sebagai pemisah.
Apakah saya dapat memasukkan Prefixes of Keys to Be Synchronized dan Prefixes of Keys to Be Filtered Out sekaligus?
Ya. Aturan sinkronisasi dan filter untuk kunci keduanya berlaku.
Apakah kondisi filter mendukung panggilan API?
Tidak.
API terkait
API | Deskripsi |
Konfigurasi task migrasi atau sinkronisasi DTS dan konfigurasikan parameter |