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/