Diperbarui
Teman-teman!
TL;DR
Perlu kode yang berfungsi untuk menelusuri daftar semua tabel saya yang ada yang akan membuat file CSV dengan memilih 100 baris teratas setiap tabel. Ada variabel yang diatur untuk menangkap nama tabel yang akan digunakan secara dinamis, memanggil tabel untuk memilih dan memberi nama file. Harus dilakukan melalui PLSQL dan SQLDeveloper. Tahukah kamu, wae?
Inilah situasinya:
- Harus mengumpulkan semua tabel (tabel dasar tidak sementara) dan jumlah baris (jumlah baris>0)
- Buat loop untuk memilih(*) 100 baris teratas dari daftar tabel
- Ambil hasil kueri dan letakkan di file CSV
Masalah:
- Mendeklarasikan Variabel
- Menggunakan Mulai dan Akhir
- Menggunakan nama dinamis untuk menghasilkan file CSV unik
Ini Kode saya:
CREATE GLOBAL TEMPORARY TABLE NameRow (nom VARCHAR2(100), rowc INTEGER)
on commit delete ROWS;
insert into NameRow(nom, rowc) select table_name, num_rows from user_tables where temporary = 'N' and num_rows > 0;
--select * from namerow;
--select count(nom) from namerow;
--drop table namerow;
--no need for the row count > 0 because that was already done above
declare
counter number := 0;
totalrecords number := 0;
nmbre varchar2(100);
BEGIN
Select count(nom) into totalrecords from namerow;
WHILE counter <= totalrecords LOOP
select nom into nmbre from NameRow where rownum =1;
SET SPOOL ON
SPOOL c:\Users\l.r.enchaustegui\Documents\reporepo\||nmbre||.csv
select /*csv*/ * from HR.nmbre;
SET SPOOL OFF
delete from namerow where rownum=1;
counter := counter + 1;
End loop;
END;
Kode Dijelaskan:
- Tabel sementara dibuat dengan kolom varchare dan integer untuk mencatat semua tabel di DB dengan RowCountnya
- Nama Tabel yang dimasukkan ke dalam tabel sementara harus bersifat non-sementara dan mempunyai jumlah baris lebih dari 0
Segmen selanjutnya
- Mendeklarasikan 3 variabel: 2 bilangan bulat dan varchar
- 2 Integer: 1 adalah counter untuk loop. 1 mencatat total baris dalam tabel Temp yang akan berfungsi sebagai iterasi maksimal dalam loop.
- Varchar: Nmbre akan mencatat nama nama tabel pertama dalam tabel temp.
Segmen Berikutnya
- Gabungkan ke jalur berikut, menggunakan variabel Nmbre untuk memberi nama file CSV secara dinamis
- Spool Query menggunakan variabel Nmbre untuk memilih tabel secara dinamis
- Hapus baris pertama dari tabel temp [berfungsi untuk memutar ke nama tabel berikutnya]
- Kumparan
- Lingkaran
- Lingkaran akhir; Akhir;
Dimana saya salah? Juga, saya mendapatkan kesalahan ini:
Putaran Bonus: Terbatas untuk Pengembang SQL