Oracle SQL Bir Hücreye 4000 Karkterden Fazla Veri Yazmak

 Oracle SQL'de bir hücreye 4000 karekterden fazla veri yazmayı istiyorsanız kolon tipi olarak CLOB kullanmalısınız. VARCHAR2 ve benzeri kolonlara maximum 4000 karekter veri yazabilirsiniz. 4000 karekterden uzun veriyi tabloya yazmayı denediğinizde aşağıdaki gibi bir hata alırsınız.

General Exception: ORA-01704: string literal too long 

Bu hatayı almanız, veritabanına yazmak istediğiniz verinin uzunluğunun veritabanı tarafından desteklenmeyen bir değere ulaştığı anlamına gelir. Oracle veritabanında, bir string literal'in maksimum uzunluğu 4000 karakterdir. Eğer veritabanına yazmak istediğiniz veri bu uzunluğu aşıyorsa, CLOB veri tipi kullanmanız gerekir. GENIS_KOLON isimli CLOB Kolon aşağıdaki gibi oluşturulabilir.

CREATE TABLE "DB"."TABLO" 
   (  "NORMAL_KOLON" VARCHAR2(200), 
      "GENIS_KOLON" CLOB
   );

Bu kolona database client üzerinden istediğiniz uzunlukta veri yazabilirsiniz. Python gibi bir yazılımdan veri göndermek istiyorsanız verinin CLOB'a dönüştürülmesi gerekir. Oracle veritabanına 4000 karakterden fazla veri yazmak için Python'da cx_Oracle modülü kullanılabilir. İlgili sütun tipinin database'de CLOB (Character Large Object) tipi olduğundan emin olun. Python için örnek bir kod aşağıdaki gibidir:

import cx_Oracle
# Veritabanı bağlantısının açılması
conn = cx_Oracle.connect("username/password@hostname:port/sid")
# Veritabanı işlemleri için bir cursor oluşturulması
cursor = conn.cursor()
# Veriyi içeren değişken
long_data = "Long data here..." * 1000
# Veritabanı tablosuna veri yazma
cursor.execute("""
    INSERT INTO table_name (column_name)
    VALUES (:data)
""", data=cx_Oracle.CLOB(long_data))
# Değişikliklerin veritabanına kaydedilmesi
conn.commit()
# Bağlantının kapatılması

conn.close()

Bu kod parçacığında, cx_Oracle.CLOB() fonksiyonu ile veriyi CLOB veri tipine dönüştürülür ve veritabanına kaydedilir.


Google