Hi Mikel,
Show create table shows a line CONSTRAINT ... FORIEGN KEY ...

you can add a grep on this line. But this will be difficult. You can construct
another desc2xml using just "show create table" to have it easier.

Mathias

Selon Mikel - <[EMAIL PROTECTED]>:

> Thanx Mathias for your quick and effective response, I see that your program
> almost display the format that I need, the thing is that I need the foreign
> key information too, Does MySQL have a statement besides "show create table"
> to display this information?....Thanks again for your suggestions and help
>
> Greetings
>
> >From: "mathias fatene" <[EMAIL PROTECTED]>
> >To: <mysql@lists.mysql.com>
> >CC: <mysql@lists.mysql.com>
> >Subject: RE: MYSQL to XML
> >Date: Sun, 24 Apr 2005 21:39:14 +0200
> >MIME-Version: 1.0
> >Received: from lists.mysql.com ([213.136.52.31]) by mc3-f23.hotmail.com
> >with Microsoft SMTPSVC(6.0.3790.211); Sun, 24 Apr 2005 12:42:26 -0700
> >Received: (qmail 15912 invoked by uid 109); 24 Apr 2005 19:40:50 -0000
> >Received: (qmail 15893 invoked from network); 24 Apr 2005 19:40:50 -0000
> >Received: pass (lists.mysql.com: local policy)
> >X-Message-Info: JGTYoYF78jEQFMtosA6GPW/w+/WF28t94KBGDmreITY=
> >Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
> >List-ID: <mysql.mysql.com>
> >Precedence: bulk
> >List-Help: <mailto:[EMAIL PROTECTED]>
> >List-Unsubscribe:
> ><mailto:[EMAIL PROTECTED]>
> >List-Post: <mailto:mysql@lists.mysql.com>
> >List-Archive: http://lists.mysql.com/mysql/183030
> >Delivered-To: mailing list mysql@lists.mysql.com
> >X-MSMail-Priority: Normal
> >X-Mailer: Microsoft Outlook, Build 10.0.2616
> >X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
> >X-Virus-Checked: Checked
> >Return-Path: [EMAIL PROTECTED]
> >X-OriginalArrivalTime: 24 Apr 2005 19:42:26.0285 (UTC)
> >FILETIME=[BE1839D0:01C54905]
> >
> >Hi Mikel,
> >There are a lot of possibilities including commercial (:o)) products.
> >I suggest you those solutions. The output should be reparsed for your
> >needs :
> >1. the -X on client :
> >     C:\Mysql>mysql -u mathias world -X -e "desc country"
> >     <?xml version="1.0"?>
> >
> >     <resultset statement="desc country">
> >       <row>
> >         <Field>Code</Field>
> >         <Type>char(3)</Type>
> >         <Null></Null>
> >         <Key>PRI</Key>
> >         <Default></Default>
> >         <Extra></Extra>
> >       </row>
> >       <row>
> >             <Field>Name</Field>
> >             <Type>char(52)</Type>
> >             <Null></Null>
> >             <Key></Key>
> >             <Default></Default>
> >             <Extra></Extra>
> >       </row>
> >
> >       <row>
> >             <Field>Continent</Field>
> >...
> >...
> >
> >2. install perl DBI and DBIx-XML_RDB modules :
> >#!perl -w
> ># ---------------------------------------------------------------
> ># Describe2xml
> ># Author : Mathias FATENE
> ># Date   : 24 april 2005
> ># ---------------------------------------------------------------
> >use DBIx::XML_RDB;
> >
> >  my $userid='root';
> >  my $password='**************';
> >  my $dbname='world';
> >  my $dsn = "DBI:mysql:database=$dbname;host=localhost";
> >
> >  my $xmlout = DBIx::XML_RDB->new($dsn,'mysql',$userid, $password) || die
> >"Failed to make new xmlout";
> >
> >   $xmlout->DoSql("describe country");
> >   print $xmlout->GetData;
> >
> >C:\Mysql>perl describe.pl
> ><?xml version="1.0"?>
> ><DBI driver="DBI:mysql:database=world;host=localhost">
> >         <RESULTSET statement="describe country">
> >                 <ROW>
> >                         <Field>Code</Field>
> >                         <Type>char(3)</Type>
> >                         <Null></Null>
> >                         <Key>PRI</Key>
> >                         <Default></Default>
> >                         <Extra></Extra>
> >                 </ROW>
> >                 <ROW>
> >                         <Field>Name</Field>
> >                         <Type>char(52)</Type>
> >                         <Null></Null>
> >                         <Key></Key>
> >                         <Default></Default>
> >                         <Extra></Extra>
> >                 </ROW>
> >                 <ROW>
> >...
> >...
> >3. install Perl DBI and DBD-Mysql and use my program (formatted for your
> >needs) :
> >#!perl -w
> ># ---------------------------------------------------------------
> ># Describe2xml
> ># Author : Mathias FATENE
> ># Date   : April, 24 2005
> ># ---------------------------------------------------------------
> >use DBI;
> >
> >  my $userid='root';
> >  my $password='************';
> >  my $dbname='world';
> >  my $dsn = "DBI:mysql:database=$dbname;host=localhost";
> >
> >  my $dbh = DBI->connect($dsn,$userid, $password,{'RaiseError' => 1});
> >   # ---------------------------------------------------------------
> >   # describe country table and print it in XML format
> >   # ---------------------------------------------------------------
> >   my $table="country";
> >   $sth = $dbh->prepare("describe $table");
> >   $sth->execute();
> >
> >   print "\<table name=\"$table\"\>\n";
> >   while (my @ref = $sth->fetchrow_array()) {
> >        print "\<column name=\"$ref[0]\" required=\"true\"
> >type=\"$ref[1]\"";
> >        print " primaryKey=\"true\"" if ($ref[3] eq "PRI") ;
> >        print "/\>\n";
> >   }
> >   $sth->finish();
> >   print "\</table\>\n";
> >
> >   # Disconnect from the database.
> >   $dbh->disconnect();
> >
> >C:\Mysql>perl desc.pl country
> ><table name="country">
> ><column name="Code" required="true" type="char(3)" primaryKey="true"/>
> ><column name="Name" required="true" type="char(52)"/>
> ><column name="Continent" required="true"
> >type="enum('Asia','Europe','North
> >America','Africa','Oceania','Antarctica','South America')"/>
> ><column name="Region" required="true" type="char(26)"/>
> ><column name="SurfaceArea" required="true" type="float(10,2)"/>
> ><column name="IndepYear" required="true" type="smallint(6)"/>
> ><column name="Population" required="true" type="int(11)"/>
> ><column name="LifeExpectancy" required="true" type="float(3,1)"/>
> ><column name="GNP" required="true" type="float(10,2)"/>
> ><column name="GNPOld" required="true" type="float(10,2)"/>
> ><column name="LocalName" required="true" type="char(45)"/>
> ><column name="GovernmentForm" required="true" type="char(45)"/>
> ><column name="HeadOfState" required="true" type="char(60)"/>
> ><column name="Capital" required="true" type="int(11)"/>
> ><column name="Code2" required="true" type="char(2)"/>
> ></table>
> >
> >is this beautifull ?
> >
> >I will modify Describe2xml.pl to be more parametrized (user, db, pass,
> >FK, ...) as soon as possible.
> >
> >Mathias
> >
> >
> >
> > >>  Hi list, does it possible for MySQL to generate XML in the followin
> >format:
> > >>
> > >>  <table name="ServiceType">
> > >>      <column name="idTipoServicio" primaryKey="true"
> > >>              required="true" type="VARCHAR" size="10"/>
> > >>      <column name="nombre" required="true" type="VARCHAR"
> >size="255"/>
> > >>      <column name="costo" required="true" type="FLOAT" size="9"/>
> > >>      <column name="idGrupo" required="true" type="INTEGER"/>
> > >>      <column name="activa" required="true" type="BOOLEANINT"/>
> > >>
> > >>      <foreign-key foreignTable="Grupo" onUpdate="none"
> >onDelete="none">
> > >>          <reference foreign="idGrupo" local="idGrupo"/>
> > >>      </foreign-key>
> > >>    </table>
> > >>
> > >>  This XML is the structure of the ServiceType table,  I'll hope that
> >you >>   can
> > >>  help me
> > >>
> > >>  Thnx in advanced
> > >>
> > >>  Greetings
> > >>
> > >>  P.S. Any suggestions (tools) will be appreciated
> > >>
> > >>
> > >>
> > >>  Thread
> > >>
> > >>      * MySQL to XML - Mikel -, April 23 2005 1:07am
> > >>
> >
> >
> >
> >
> >
> >--
> >MySQL General Mailing List
> >For list archives: http://lists.mysql.com/mysql
> >To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> >
>
>
>



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to