مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۴ ماه پیش

بررسی و تبدیل ستون‌های JSON مبتنی بر متن در Oracle 23c با استفاده از JSON_TYPE_CONVERTIBLE_CHECK


Oracle 23c جدیدترین نسخه پایگاه داده Oracle، ابزارهای پیشرفته‌ای را برای کار با داده‌های JSON معرفی کرده است. یکی از این ابزارها، رویه JSON_TYPE_CONVERTIBLE_CHECK در بسته DBMS_JSON است که برای بررسی و تایید قابلیت تبدیل ستون‌های JSON مبتنی بر متن به نوع داده‌ی JSON استفاده می‌شود. در این مقاله به نحوه استفاده از این رویه و حل مشکلات متداول در این فرآیند می‌پردازیم.

مشکل

قبل از Oracle 21c، داده‌های JSON به صورت متن ذخیره می‌شدند، معمولاً در ستون‌هایی با انواع داده‌های BLOB، CLOB یا VARCHAR2. با معرفی نوع داده‌ی JSON در Oracle 21c، نیاز به تبدیل این ستون‌ها به نوع داده‌ی جدید برای بهبود عملکرد و کارایی احساس شد. این فرآیند می‌تواند با روش‌های مختلفی انجام شود:

  • ایجاد جدول با استفاده از انتخاب (CTAS)
  • پمپ داده
  • تعریف مجدد جدول آنلاین
  • اضافه کردن ستون جدید و انجام به‌روزرسانی DML

با این حال، پیش از شروع تبدیل، باید مطمئن شویم که داده‌های موجود در ستون‌ها برای تبدیل مناسب هستند.

راه حل: استفاده از DBMS_JSON.JSON_TYPE_CONVERTIBLE_CHECK

در Oracle 23c، رویه JSON_TYPE_CONVERTIBLE_CHECK به بسته DBMS_JSON اضافه شده است. این رویه به شما اجازه می‌دهد تا قبل از شروع فرآیند تبدیل، قابلیت تبدیل داده‌های JSON مبتنی بر متن را بررسی کنید.

PROCEDURE JSON_TYPE_CONVERTIBLE_CHECK

PROCEDURE JSON_TYPE_CONVERTIBLE_CHECK

Argument Name                  Type                    In/Out Default?

—————————— ———————– —— ——–

OWNER                          VARCHAR2                IN

TABLENAME                      VARCHAR2                IN

COLUMNNAME                     VARCHAR2                IN

STATUSTABLENAME                VARCHAR2                IN

FASTCHECK                      BOOLEAN                 IN     DEFAULT

APPENDSTATUS                   BOOLEAN                 IN     DEFAULT

مراحل اجرای رویه JSON_TYPE_CONVERTIBLE_CHECK

ایجاد جدول تست

drop table if exists json_data_precheck purge;

drop table if exists json_data purge;

create table json_data (

id    number generated always as identity,

data  clob

);

افزودن داده‌های JSON به جدول تست

insert into json_data (data)

values (null);

insert into json_data (data)

values (‘{}’);

insert into json_data (data)

values (‘{“product”:”banana”, “quantity”:10}’);

commit;


اجرای رویه JSON_TYPE_CONVERTIBLE_CHECK

begin

dbms_json.json_type_convertible_check(

owner           => ‘testuser1’,

tablename       => ‘json_data’,

columnname      => ‘data’,

statustablename => ‘json_data_precheck’

);

end;

/

بررسی نتایج

select * from json_data_precheck;

نتایج نشان می‌دهد که فرآیند تبدیل بدون خطا تکمیل شده است.

افزودن رکورد مشکل‌دار و اجرای مجدد رویه

insert into json_data (data)

values (‘banana’);

commit;

drop table if exists json_data_precheck purge;

begin

dbms_json.json_type_convertible_check(

owner           => ‘testuser1’,

tablename       => ‘json_data’,

columnname      => ‘data’,

statustablename => ‘json_data_precheck’

);

end;

/

این بار نتایج نشان می‌دهد که یک خطا وجود دارد.

اصلاح داده‌های مشکل‌دار و اجرای مجدد رویه

update json_data

set    data = ‘{“product”:”banana”, “quantity”:1}’

where  id = 4;

commit;

drop table if exists json_data_precheck purge;

begin

dbms_json.json_type_convertible_check(

owner           => ‘testuser1’,

tablename       => ‘json_data’,

columnname      => ‘data’,

statustablename => ‘json_data_precheck’

);

end;

/

تبدیل داده‌ها به ستون JSON

پس از تایید صحت داده‌ها، می‌توانید فرآیند تبدیل را انجام دهید:

alter table json_data add (

data2 json

);

update json_data

set    data2 = JSON(data);

alter table json_data drop column data;

alter table json_data rename column data2 to data;

اکنون نوع داده‌ی ستون JSON است و حاوی داده‌های تبدیل شده می‌باشد.

نتیجه‌گیری

رویه JSON_TYPE_CONVERTIBLE_CHECK در Oracle 23c ابزاری قدرتمند برای بررسی و تبدیل داده‌های JSON مبتنی بر متن به نوع داده‌ی JSON است. این رویه به شما کمک می‌کند تا قبل از شروع فرآیند تبدیل، اطمینان حاصل کنید که داده‌های شما برای این تبدیل مناسب هستند و مشکلات احتمالی را پیش از تبدیل برطرف کنید. این مقاله به شما نشان داد که چگونه می‌توانید از این ابزار استفاده کنید و فرآیند تبدیل را به طور کامل مدیریت کنید.

منبع مستند

oracle json convertoracle databaseخدمات اوراکلمشاوره اوراکلآموزش اوراکل
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید