Oracle SQL - wyciąg danych

0

Mam baze a w bazie kilkadziesiąt tabel. Interesuje mnie jak odczytać liczbe wierszy poszczególnych tabel.

Wiem jak to zrobć pojedyńczo czyli:

select count(*) from  tabela_A 
 i dostaje wynik ilości wierszy w tabeli A.

Jaką komende napisac abym dostał wynik ilości wierszy poszczególnych tabel tzn wszystkich tabel z bazy aby wynik był podobny do czegos takiego:
tabela_A , tabela_B
60 , 50

Czyli poprotsu aby wynikiem była tabela z nazwami tabel z bazy i ilościomi wierszy.

0

HMM???

0

co hmm? Płacisz tu komuś? poszukać w googlach się nie chciało?

gather_schema_stats + dba_tables

0

szukałem kolka godzin ale nie znalazłem dlatego tutaj zapytałem.
czy to polecenie twoje wystarczy przekopiowac i bedzie działać czy trzeba w nim coś zmieniać??

0

Skopiowałem to i nie działa. co dokładnie trzeba zrobić?

0

Mowiłem że nie znalazłem na google. Ten link co podałeś jest do dwóch tabel, ja mam 300 tabel i z tych 300 tabel chciałbym pobrać wyniki.
W dodatku dopiero od kilku dni ucze sie sql prosze o wyrozumiałość i podanie bez pomijania czegokolwiek.

0

Uwierz mi, jeśli się dwa dni uczysz, to znaczy, że to o co pytasz NIE JEST ci potrzebne.
Spróbuj sformułować pytanie inaczej...

0

Własnie jest mi to potrzebne. mam 300 tabel w bazie i sprawdzenie mi pojedyńczo ilości wierszy w każdej kolumnie za pomocą

SELECT COUNT(*) FROM  tabela_A
zajmie mi sporo czasu. chyba jest jakaś prosta możliwość odczytania takich samych danych ze wszystkich kolumn.
0

Widze zę nie ma tutaj pomocnych dla poczatkujących. Gdyby ktoś napisał całą składnie i powiedział gdzie cos zmienic to by duzo pomogło, i nie zawracał bym wam tutaj głowy. Tak jak mówiłem zaczynam nauke sql i robie sobie ćwiczonka ale potrzebuje w stopniu bardziej zaawansowanym znać składnie która mi to policzy, nie musze jej rozumieć już teraz wystarczy że mi da odpowiedni wynik. Gdzie mam pytac jak nie na forum. Grzecznie prosze o pomoc.

2

g**no a nie szukałeś. Wklepujesz w google dba_tables i w pierwszym wyniku masz https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4155.htm#REFRN23286 gdzie masz opisane CO W NIEJ JEST i linka do https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#REFRN20286 gdzie jest DOKŁADNY OPIS KOLUMN. Tam jak byk jest NUM_ROWS* NUMBER Number of rows in the table i choćby z czystej ciekawości wystarczy zrobić SELECT * FROM dba_tables i zobaczyć co dostaniesz i jak się to ma do tego czego potrzebujesz. Załóżmy, że coś się nie zgadza (bo zapewne tak będzie) to może zaświta aby to drugie wklepać do googla i, ta dam, niespodzianka w trzecim linku (bo pierwsze dwa to linki do manuala) jest EXAMPLE czyli PRZYKŁAD https://www.krenger.ch/blog/oracle-dbms_stats-gather_schema_stats-example/ gdzie nawet nie trzeba nic czytać tylko wziąć i przekleić EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'SIMON');. No ale tu jest pierwszy zgrzyt - trzeba mieć chociaż PODSTAWOWĄ wiedzę o oracle aby wiedzieć co wpisać zamiast SIMON. I nie nikt z nas ci tego nie powie bo my nie wiemy co jest u ciebie. Po wykonaniu tego wracamy do pierwszego zapytania i co się naszym oczom ukazuje???? No niemożliwe - oczekiwany rezultat! I to bez żadnych cudownych zaklęć tylko zwykły prosty select.

To, że tobie się nie chce to nie jest żadne usprawiedliwienie. Odpowiedź dostałeś w pierwszym poście. Wystarczyło 10-15 minut z google i własnym mózgiem. A następnym razem daruj sobie te swoje HMM??? bo nikt tu nie jest na twoich usługach ani nikomu nie płacisz, żebyś miał prawo czegokolwiek żądać albo kogokolwiek poganiać!

0

Masz racje że trzeba znać podstawową wiedze i właśnie pomału ją zdobywam.
Wpisałem SELECT * FROM dba_tables i nic błędy jakieś.
Zrozum że to jest nowość dla mnie i dlatego nie wiem o co chodzi z tym SIMON, wystarczy napisac to to jest i sam sobie zamienię.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'SIMON'); wpisałem to ale nie wiem o co chodzi z tym simonem. Czy to jest cała składnia czy jeszcze cos mam wpisać (oprócz zmiany tego simona)?

0

nie działa i nie wiem gdzie jest błąd, dostaje tylko taki komunikat: PL/SQL procedure successfully completed i nic wiecej

0
EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'moja_nazwa_użytkownika')

wynik: PL/SQL procedure successfully completed
SELECT * FROM dba_tables
błąd:

ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
Error at Line: 1 Column: 15

=======

Co zrobić??

0
 moja_nazwa_użytkownika 

Czy jesteś pewny, że tak nazywa się twój schemat ?

Link z opisem:
https://oracleexamples.wordpress.com/2009/09/08/tips-for-dbms_stats-part-12/

0

Domysliłem się że to chodzi o nazwe użytkownika w bazie.
Nie jestem pewny nazwy schematu bo nie wiem co to jest. Może wyjaśnisz.

0

Powiem tak nie wiem czemu wasze porady nie działają ale znalazłem na necie taki artykuł http://www.dba-oracle.com/t_count_rows_all_tables_in_schema.htm i tam jest kod który skopiowałem i wrzuciłem do mojej bazy. Liczy to co chce ale nie rozumiem tego kodu ale mniejsza z tym że nie rozumiem fajnie że liczy to co chce.
Mam też nadzieje że ktoś wyjaśni do końca wasze porady.

0

Schemat to po prostu struktura twojej bazy. Czyli tabele, widoki, relacje między nimi itd.

P.S. Kopiowanie kodu, którego się nie rozumie prawdopodobnie nie jest najlepszym sposobem nauki czegokolwiek.

0

i jak to sie nazywa?? (ten schemat)

0

Może inaczej gdzie czy nazwa bazy to nazwa schematu??

0

Nazwa(SID) bazy to nie nazwa schematu.

Aby zobaczyć schematy na bazie możesz wykonać:

select * from dba_users; 

Nazwy użytkowników pokrywają się z nazwami schematów bazy.

Oczywiście musisz mieć uprawnienia do słownika DBA_USERS.

Dla zapytania

SELECT * FROM dba_tables; 

poleciał ci błąd ponieważ nie masz uprawnień do tego słownika systemowego z użytkownika z którego to wykonujesz.

0

To co mam zrobić aby to mieć?

Nazwy użytkowników pokrywają się z nazwami schematów bazy.
  • Tego to nie wiedziałem

Tutaj screen, prosze mi powiedzieć co ja mam:
http://obrazki.elektroda.pl/1447504300_1455835606.png
To jest moja baza do nauki, a tą z 300 tabelami musze juz uważać.

0

logujesz się na użytkownika SYS i nadajesz odpowiednio co ci potrzeba

grant select on dba_tables to "Twój user";

Tylko nic nie powiedziałeś, czy to jest twoja baza i czy masz dostęp do konta SYS?

0

Przetabiam to http://blog.dataconsulting.pl/darmowy-kurs-sql-online-oracle/ wiec mam tak jak tu piszą.

0

dalej mam błędy,

Error starting at line : 1 in command -
GRANT SELECT ON dba_tables TO 'hr'
Error report -
SQL Error: ORA-00987: missing or invalid username(s)
00987. 00000 - "missing or invalid username(s)"
*Cause:
*Action:

może juro napisz co ja mam robić po kolei, bo nie wiem czy dobrze robie

0

Jak już jesteś na SYS to wykonujesz:

GRANT SELECT ON dba_tables TO HR; 

Poczytaj sobie o tabelach słownikowych:
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables014.htm

oraz o nadawaniu grantów:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9013.htm

dokumentacja nie gryzie a bez niej nic nie zrobisz, bo za każdym razem z byle problemem nie będziesz leciał na forum.

0

Mam do Ciebie proźbe. Napisz mi cała składnie po kolei od samego początku co mam robić aby uzyskać to co chce. Bo jeden mówi tak drugi inaczej i sam nie wiem co mam kiedy zrobić. I wtedy było by na tyle. Bo naprawde pomieszało mi sie we łbie.

1

Napisz mi cała składnie po kolei od samego początku co mam robić aby uzyskać to co chce.

Chłopie, weź Ty odpal jakiś poradnik i zacznij się uczyć od zera. Nikt Ci tutaj gotowców, w dodatku w ciemno wysyłać nie będzie. Co to w ogóle jest za moda typu: "Teraz chce wyniki a wiedza przyjdzie z czasem". Jak tak chcesz się uczyć to nic się nie nauczysz.
To tak jakbyś chciał wiedzieć jak dokładnie działa komórka wysyłając sms i czekając na objawienie jak wygląda oraz działa elektronika w środku.

0

Nie wiecie nawet jak cieszy mnie że nasz forumowy geniusz przeniósł się z javy do baz danych chwilowo :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1