2009-02-26 21 views
32

Di solito uso SQLDeveloper per esplorare il database, ma non riesco a farlo funzionare con hsqldb e non so quali tabelle sono già state create ... Immagino che sia una domanda specifica del venditore, e non un semplice sql, ma il punto è: come posso vedere le tabelle in modo da poterle rilasciare/modificare?Come visualizzare tutte le tabelle in un database HSQLDB?

+0

Che database stai usando. La risposta dipende molto. –

+1

Spiacente, ho aggiunto un tag ma ho dimenticato di menzionare che sto usando Hsqldb – nobody

+1

Onestamente, il titolo mi ha detto che cos'è il BDMS. – will

risposta

40

Lo standard ANSI SQL92 per l'interrogazione dei metadati del database è contenuto nelle strutture di dati INFORMATION_SCHEMA.

ho idea se il database supporta questo o no, ma provare quanto segue

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 

Su ulteriori ricerche sembra che hsqldb supporta INFORMATION_SCHEMA ma con un po 'di denominazione non standard.

Tutti i tavoli hanno SYSTEM_ anteporre al loro così l'esempio precedente avrebbe letto

SELECT * 
FROM INFORMATION_SCHEMA.SYSTEM_TABLES 

non ho modo di testare questo e la risposta è stata trovata su sourceforge

+2

Sembra che Hsqldb non lo supporti, ma grazie. – nobody

+1

Quindi ho solo bisogno di aggiungere dove TABLE_TYPE = 'TABLE' e ho capito ... grazie per il vostro aiuto! E la buona notizia, secondo il link che hai postato è che, per le nuove versioni, seguiranno lo standard. Grazie ancora. – nobody

+0

Tabella non trovata: TABELLE in istruzione [SELECT * FROM INFORMATION_SCHEMA.TABLES] – cherouvim

12

Impressionante, grazie! Ho setacciato il web per quelle informazioni. Verrà recuperato solo informazioni campo le tabelle:

SELECT TABLE_NAME, COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, DECIMAL_DIGITS, IS_NULLABLE FROM INFORMATION_SCHEMA.SYSTEM_COLUMNS WHERE TABLE_NAME NOT LIKE 'SYSTEM_%' 

È possibile recuperare gli indici, informazioni chiave primaria, tutta roba da kindza INFORMATION_SCHEMA.SYSTEM_TABLES. Gotta love oo documentation: p

+0

non ci sono tabelle in HSQLDB dopo l'esecuzione utilizzando SELECT ... FROM INFORMATION_SCHEMA.SYSTEM_COLUMNS WHERE TABLE_NAME NON MI PIACE 'SYSTEM_%' in jdbc: hsqldb: mem: come connessione URL. Quindi il formato di connessione non è per la query, ma può connettersi nel back-end, giusto? – parsifal

+0

Quella query funziona perfettamente, mi ha salvato un po 'di tempo. Sto usando HSQL 2.3.2 – cbaldan

0

Si esegue una query utilizzando hsql database manager, vero? se si utilizza questo, al di sotto può dare alcuni suggerimenti:

selezionare la connessione

  1. Tipo: HSQL DATABASE ENGINE SERVER
  2. driver: jdbc.hsqldb.jdbcDriver
  3. URL: jdbc:hsqldb:hsql://localhost/

allora navigherai il database.

3

Se siete sulla riga di comando, si consiglia di provare il Hsqldb SqlTool, documentato http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html

  • mettere le vostre informazioni di connessione al database in "~/sqltool.rc" e scegliere qualsiasi DBNAME vuoi , sostituire nome utente e password corretti se conosciuti.
    • DBNAME urlid
    • url jdbc: HSQLDB:/path/to/hsql/banca dati
    • nome utente sa
    • la password
  • Installare strumento con: apt-get install HSQLDB-utils (su Ubuntu)
  • Collega con: hsqldb-sqltool DBNAME # su Ubuntu
  • suggerimento per altri sistemi: java-jar YourHsqlJar.jar DBNAME
  • Mostra tabelle con: \ dt
  • Mostra colonne con: \ d TABLENAME
  • Query standard come: SELECT * FROM ...;
  • Edit (aggiungere) ultimo comando con:: un
  • Uscire con: \ q
  • Vedi comandi speciali con: \? O :?

Buona fortuna!

1

Utilizzare il comando "\ dt" quando si preme il prompt "> sql" nella riga di comando per HSQLDB.

Problemi correlati