Forum
Veritabanı olarak Oracle, ETL olarak SSIS kullanmaktayım. Veritabanı bir tabloda tutulan SQL kodunu SSIS'te değişkene aktarıyorum. Fakat SQL kodunun içinde -- ile başlayan yorum satırları var. Şimdilik belli yorum satırlarını "" ile replace yaptım. Fakat otomatik olarak bu işlemi yapabilmek istiyorum. Satır bitimleri olarak \n karakter kodunu not defteri dosyası bize göstermiyor fakat substring yada instr gibi fonksiyonlar kullansam, -- başlayan yorum satırını /* ile değiştebilirim fakat bir alt satır kodunu "*/ \n" olarak değiştirebilir miyim? Yani bir alt satır kodunu nasıl bulabilirim?
Tablodaki SQL kodunu değişkene aktardığım zaman, değişkendeki satır aşağıdaki gibi tek satır olarak görünüyor. Aslında SSIS Watch ekranında --yeni talep\n olarka görüyorum fakat yinede sorguyu SSIS'te çalıştırdığım zaman -- itibaren sorgunun devamı yorum satırı olarak algılandığı için hata vermektedir.
SELECT TARIH, MUSTER, --yeni talep TUTAR FROM TABLE
Bir alt satıra geçme kodu olan \n kaçıcı karakter olduğunu Oracle'da nasıl bulabilirim? Yada line sonunu substr/replace içinde nasıl kullanabilirim?
Selam,
Bunun için REGEXP_REPLACE kullanabilirsin. Şu örneği inceler misin: https://livesql.oracle.com/apex/livesql/file/content_EWIG7YMJ5XTKLNEQ77I6JV5EW.html
Sorgumda aşağıdaki regexp komutunu kullandım fakat sorgumun genel yapısını bozdu. Örneğin bir fonksiyon var ve fonksiyonun başında - yazıyor yani fonksiyondan dönen sonucu -1 ile çarpılmış olarak gösteriyor. Başındaki - gitti. bazı " işaretleri gitti. Sorgu temiz bir sorgu değil, kolon çıktılarında türkçe karakter kullanılmış, örneğin MUSTERI yazmak yerine SELECT'teki kolon çıktısına "Müşteri" yazılmış gibi. Bazı çift tırnak ifadeleride silinmiş oldu. Aşağıdaki regexp komut çözüm olmadı.
regexp_replace(trim(query), '--[^\r\n]*', '')
https://www.postgresql.org/message-id/56311C52.3000907%40wolman.co.uk
https://larrysteinle.com/2011/02/09/use-regular-expressions-to-clean-sql-statements/
Aşağıdaki ifade ile yorum satırlarını kaldırabildim. Teşekkürler.
REGEXP_REPLACE(TRIM(sqlkodu), '--.+'||CHR(10), CHR(10));