create table kisiler(adi varchar2(30),
soyadi varchar2(30),
yasi number);
--Küçük bir not ekleyelim hemen araya. burada directory adını verirken buyuk harf ile vermeyi
--unutmayalım. dosyadan okuduğu için buyuk hart vermeniz gerekecektir.
CREATE OR REPLACE PROCEDURE dosyadan_yukleme
AS
v_line VARCHAR2 (2000); -- dosyadan okunacak her bir satır
v_file UTL_FILE.file_type; -- Verilerin olduğu dosya
v_dir VARCHAR2 (250); -- dosyanın bulunduğu dizin
v_filename VARCHAR2 (50); -- dosyamızın adı
v_1st_virgul NUMBER; --ilk virgulun olduğu yer
v_2nd_virgul NUMBER; --ikinci virgülün olduğu yer
v_adi VARCHAR2(30); --alanlarımız için değişkenler ADI
v_soyadi VARCHAR2 (30); --alanlarımız için değişkenler SOYADI
v_yasi NUMBER; --alanlarımız için değişkenler YASI
BEGIN
v_dir := 'dosya_yolum';
v_filename := 'kisiler.txt';
v_file := UTL_FILE.fopen (v_dir, 'kisiler.txt', 'r',1000);
-- --------------------------------------------------------
--DOSYA SONUNA GELENE KADAR OKU
-- --------------------------------------------------------
LOOP
BEGIN
UTL_FILE.get_line (v_file, v_line);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
EXIT;
END;
v_1st_virgul := INSTR (v_line, ',', 1, 1);
v_2nd_virgul := INSTR (v_line, ',', 1, 2);
v_adi := SUBSTR (v_line, 1, v_1st_virgul - 1);
v_soyadi :=
SUBSTR (v_line, v_1st_virgul + 1, v_2nd_virgul - v_1st_virgul - 1);
v_yasi := SUBSTR (v_line, v_2nd_virgul + 1);
DBMS_OUTPUT.put_line (v_adi|| ' - ' || v_soyadi || ' - ' || v_yasi);
-- ------------------------------------------
-- Kayıtları oluşturduğumuz tabloya eklemeyi yapıyoruz.
-- ------------------------------------------
INSERT INTO kisiler
VALUES (upper(v_adi), UPPER (v_soyadi), v_yasi);
END LOOP;
UTL_FILE.fclose (v_file);
COMMIT;
END;
/
--dosyamda aşağıdaki gibi kayıtlar var.
--ali,ates,12
--ali,ateş,25
--nurullah,ünlü,24
--akın,yalçın,30
BEGIN
DOSYADAN_YUKLEME;
COMMIT;
END;
3 comments:
Merhaba,
Blog sayfan cok yararlı.txt dosyadan virgülle ayrılmış dosyadan table aktarma yapmak icin kodu toad da yaptım aşağıdaki hatayı aldım.yardımcı olurmusun
teşekkürler
ORA-06550: line 2, column 1:
PLS-00201: identifier 'DOSYADAN_YUKLEME' must be declared
ORA-06550: line 2, column 1:
PL/SQL: Statement ignored
Merhaba ben burada procedue yapmıştım. ama sen procedere yaratmak istemiyorsan storage procederure olsun diyorsan
CREATE OR REPLACE PROCEDURE dosyadan_yukleme
AS ifadesinin yerine declare ifadesi yeterli olacaktır. F5 e bastığında dosyayı tabloya yükleyeceksin.
burada dosya yolunu ve tabloyu uygun şekilde oluşturmaya dikkat etmelisiniz.
Post a Comment