03. marts 2015 - 14:23
Der er
20 kommentarer og 1 løsning
DESCRIBE tabel
Hej Jeg vil gerne se strukturen i nogle tabeller som jeg skal tilgå på en ekstern server. Ville tro jeg kunne gøre det således: DESCRIBE 'tabel' Men er nød til at bruge: SELECT xxx FROM 'tabel' Kan man det ?
Annonceindlæg fra Computerworld it-jobbank
03. marts 2015 - 14:35
#1
Har prøvet: select * from tabel(dbms_xplan.display) men for følgende fejl: ORA-00933: SQL command not properly ended
03. marts 2015 - 14:37
#2
Ifølge denne side:
http://ss64.com/ora/desc.html Er DESCRIBE 'tabel'
det samme som:
SELECT
column_name "Name",
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='TABLE_NAME_TO_DESCRIBE';
03. marts 2015 - 15:08
#3
Ikke helt som forventet(resultatet kommer som xml...): <resultset> <columnNames>Name</columnNames> <columnNames>Null:1</columnNames> <columnNames>Type</columnNames> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <numCols>3</numCols> <numRows>0</numRows> </resultset> Hvis jeg gør: SELECT * FROM user_tab_columns WHERE table_name='TABEL' <resultset> <columnNames>TABLE_NAME</columnNames> <columnNames>COLUMN_NAME</columnNames> <columnNames>DATA_TYPE</columnNames> <columnNames>DATA_TYPE_MOD</columnNames> <columnNames>DATA_TYPE_OWNER</columnNames> <columnNames>DATA_LENGTH</columnNames> <columnNames>DATA_PRECISION</columnNames> <columnNames>DATA_SCALE</columnNames> <columnNames>NULLABLE</columnNames> <columnNames>COLUMN_ID</columnNames> <columnNames>DEFAULT_LENGTH</columnNames> <columnNames>DATA_DEFAULT</columnNames> <columnNames>NUM_DISTINCT</columnNames> <columnNames>LOW_VALUE</columnNames> <columnNames>HIGH_VALUE</columnNames> <columnNames>DENSITY</columnNames> <columnNames>NUM_NULLS</columnNames> <columnNames>NUM_BUCKETS</columnNames> <columnNames>LAST_ANALYZED</columnNames> <columnNames>SAMPLE_SIZE</columnNames> <columnNames>CHARACTER_SET_NAME</columnNames> <columnNames>CHAR_COL_DECL_LENGTH</columnNames> <columnNames>GLOBAL_STATS</columnNames> <columnNames>USER_STATS</columnNames> <columnNames>AVG_COL_LEN</columnNames> <columnNames>CHAR_LENGTH</columnNames> <columnNames>CHAR_USED</columnNames> <columnNames>V80_FMT_IMAGE</columnNames> <columnNames>DATA_UPGRADED</columnNames> <columnNames>HISTOGRAM</columnNames> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>LONG</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>RAW</columnTypes> <columnTypes>RAW</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>DATE</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <numCols>30</numCols> <numRows>0</numRows> </resultset> Mangler dog stadig længden på f.eks. varchar2
03. marts 2015 - 15:11
#4
Kan se det ikke er rigtigt da jeg får samme resultat med en anden tabel...
03. marts 2015 - 15:13
#5
Hvad med: SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'etellerandet' ?
03. marts 2015 - 15:17
#6
Arne: <error> <elementName>Could not perform select.</elementName> <errorMesage>ORA-00942: table or view does not exist</errorMesage> </error>
Slettet bruger
03. marts 2015 - 15:26
#7
select * from user_tab_columns where table_name = '<TABELNAVN>'
03. marts 2015 - 15:29
#8
Saa Oracle understoetter ikke INFORMATION_SCHEMA. Ak.
03. marts 2015 - 15:31
#9
men DATA_LENGTH indeholder vel laengden paa VARCHAR2 felter
Slettet bruger
03. marts 2015 - 15:52
#10
Hej Arne, jeg tror INFORMATION_SCHEMA er specifikt for MySQL. I Oracle kan du bruge DESCRIBE i SQL*Plus eller bare selv trække informationen fra de dynamiske views som fx USER_TABLES, USER_TAB_COLUMNS, USER_CONSTRAINTS, USER_OBJECTS og så videre. Hvis du vil se mere end din egen bruger, kan man bruge ALL i stedet for USER, som fx ALL_OBJECTS. Det giver dig information om de objekter, du har rettigheder til at se. Og ja - feltet DATA_LENGTH med videre definerer detaljer om felttype.
03. marts 2015 - 16:00
#11
#7 er prøver i #3 og har selv kommenteret i #4
03. marts 2015 - 16:02
#12
INFORMATION_SCHEMA er specifik for SQL standarden. :-)
03. marts 2015 - 16:05
#13
#9 som jeg ser det: SELECT column_name "Name", nullable "Null?", data_type "Type" FROM user_tab_columns WHERE table_name='Tabelnavn' <resultset> <columnNames>Name</columnNames> <columnNames>Null:1</columnNames> <columnNames>Type</columnNames> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <numCols>3</numCols> <numRows>0</numRows> </resultset> Samme svar som #3....
03. marts 2015 - 16:14
#14
Du har vel 2 problemer. 1) du finder ingen raekker d.v.s. at der ikke er noget match paa tabel navn. 2) du selecter ikke DATA_LENGTG og faar derfor ikke laengden ud.
03. marts 2015 - 16:20
#15
#14 Det første udtræk i #3 er efter select i #2 som indholder data_length. og da det udtræk i #13 giver samme resultat som det første i #3 går jeg udfra at data_length bliver ignoreret... kan godt select * from TABEL Jeg ved ikke om det kan være et problem med rettigheder?
03. marts 2015 - 16:32
#16
Proev: SELECT * FROM user_tab_columns og se om ikke du fara data_length vaerdier og check saa table_name ofg se hvorfor du ikke faar nogle raekker med din where.
03. marts 2015 - 17:10
#17
SELECT * FROM user_tab_columns: <resultset> <columnNames>TABLE_NAME</columnNames> <columnNames>COLUMN_NAME</columnNames> <columnNames>DATA_TYPE</columnNames> <columnNames>DATA_TYPE_MOD</columnNames> <columnNames>DATA_TYPE_OWNER</columnNames> <columnNames>DATA_LENGTH</columnNames> <columnNames>DATA_PRECISION</columnNames> <columnNames>DATA_SCALE</columnNames> <columnNames>NULLABLE</columnNames> <columnNames>COLUMN_ID</columnNames> <columnNames>DEFAULT_LENGTH</columnNames> <columnNames>DATA_DEFAULT</columnNames> <columnNames>NUM_DISTINCT</columnNames> <columnNames>LOW_VALUE</columnNames> <columnNames>HIGH_VALUE</columnNames> <columnNames>DENSITY</columnNames> <columnNames>NUM_NULLS</columnNames> <columnNames>NUM_BUCKETS</columnNames> <columnNames>LAST_ANALYZED</columnNames> <columnNames>SAMPLE_SIZE</columnNames> <columnNames>CHARACTER_SET_NAME</columnNames> <columnNames>CHAR_COL_DECL_LENGTH</columnNames> <columnNames>GLOBAL_STATS</columnNames> <columnNames>USER_STATS</columnNames> <columnNames>AVG_COL_LEN</columnNames> <columnNames>CHAR_LENGTH</columnNames> <columnNames>CHAR_USED</columnNames> <columnNames>V80_FMT_IMAGE</columnNames> <columnNames>DATA_UPGRADED</columnNames> <columnNames>HISTOGRAM</columnNames> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>LONG</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>RAW</columnTypes> <columnTypes>RAW</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>DATE</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>FLOAT</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <columnTypes>VARCHAR2</columnTypes> <numCols>30</numCols> <numRows>0</numRows> </resultset> Skulle vel indholde en liste over tabeller? men den er tom??
03. marts 2015 - 17:25
#18
gabende tom
03. marts 2015 - 17:28
#19
#18 fordi jeg ikke har rettigheder eller fordi det ligger et andet sted? Vil jo mene jeg skulle få en fejl hvis det var pga manglende rettigheder?
03. marts 2015 - 17:32
#20
Min plan var at lave et script der kunne oprette nogle tabeller i min mysql database udfra dette udtræk som kunne komme fra dette opslag. Jeg kan manuelt oprette tabellerne, og kender også kolonnerne, men mangler typen, er sq lidt pis hvis jeg ikke kan få den med det samme.
11. marts 2015 - 10:59
#21
Lukker
Computerworld tilbyder specialiserede kurser i database-management