/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Vis kollation for struktur
Fra : Kasper Johansen


Dato : 20-03-06 13:04

Hej gruppe.


Jeg bruger MySQL 5.


Hvis jeg vil se strukturen for en tilfældig tabel bruger jeg:
"SHOW COLUMNS FROM tabelnavn"


Dette viser dog ikke kollationen. Da jeg gerne vil lave et script, som
retter kollation for alle tabeller uansat navn osv., hvordan finder jeg
så frem til kollationen?



--
Med venlig hilsen
Kasper Johansen

 
 
Peter Brodersen (20-03-2006)
Kommentar
Fra : Peter Brodersen


Dato : 20-03-06 14:06

On Mon, 20 Mar 2006 13:04:20 +0100, Kasper Johansen
<kaspernj@gmail.com> wrote:

>Dette viser dog ikke kollationen. Da jeg gerne vil lave et script, som
>retter kollation for alle tabeller uansat navn osv., hvordan finder jeg
>så frem til kollationen?

Hvis du vil se forskellige tabellers default-collation, så kan du få
den ud med:
   SHOW TABLE STATUS

Hvis du vil se de enkelte felter i en tabel er en mulighed:
   SHOW CREATE TABLE tabelnavn
Dog, her skal du så tjekke det overordnede charset/collation, og evt.
sammenholde med de enkelte felter. Lidt en gnidret måde.

Jeg vil dog tro, at en pænere måde er at bruge MySQL 5.0s data
dictionary, som man ville gøre under andre RDBMS'er. Tjek:
http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

Fx:
SELECT column_name, data_type, collation_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = "tabelnavn"

Hvis der ikke er sat nogen collation for feltet, benyttes tabellens
collation. Du kan derfor evt. join'e den med INFORMATION_SCHEMA.TABLES
og bruge COALESCE() på at finde et felts collation_name:

COALESCE(INFORMATION_SCHEMA.COLUMNS.collation_name,INFORMATION_SCHEMA.TABLES.table_collation)
Her benyttes først collation_name fra den enkelte kolonne, og hvis den
er NULL, så tabellens collation.

Eller i sammenhæng:

SELECT b.table_schema, a.table_name, a.column_name, a.collation_name,
b.table_collation, COALESCE(a.collation_name,b.table_collation)
FROM INFORMATION_SCHEMA.COLUMNS a
INNER JOIN INFORMATION_SCHEMA.TABLES b ON a.table_name = b.table_name
WHERE b.table_schema != "information_schema"

--
- Peter Brodersen
Find dig selv: http://map.ter.dk/

Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste