【问题标题】:Extract mysql table column names with awk/grep and use awk to print xml使用 awk/grep 提取 mysql 表列名并使用 awk 打印 xml
【发布时间】:2010-11-09 08:21:35
【问题描述】:

我有一个 mysql 数据库,我想最后有一个 xml 文件,如下所示:

<user>
  <column>id</column>
  <column>name</column>
  <column>password</column>
</user>
<dept>
  <column>id</column>
  <column>name</column>
  <column>code</column>
</dept>

不做输出格式化部分我确定我可以用 awk 或其他东西做,但从模式文件中获取列名。我迷路了?

【问题讨论】:

    标签: mysql schema awk


    【解决方案1】:

    另一种方法是使用mysqldump --xml option - 输出与您上面概述的不同,但没有您无法转换之后的内容......这是架构数据可能会为您寻找的方式(如果您只想要架构,你也可以使用 --no-data)

    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="example">
    <table_structure name="user">
    <field Field="id" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="name" Type="varchar(128)" Null="NO" Key="" Default="" Extra="" />
    <field Field="password" Type="varchar(128)" Null="NO" Key="" Default="" Extra="" />
    </table_structure>
    </database>
    </mysqldump>
    

    【讨论】:

      【解决方案2】:

      获取表名:

      Select `table_name` FROM `information_schema`.TABLES
      

      然后从每个表的列:

      DESCRIBE `table_name`;
      

      SHOW COLUMNS FROM `table_name`; 
      

      【讨论】:

        【解决方案3】:

        这将生成一个包含两个字段的文本文件:表名和列名

        SELECT TABLE_NAME, COLUMN_NAME 
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE TABLE_SCHEMA='YourDatabase'
        ORDER BY COLUMN_NAME;
        

        然后你可以写一个简单的AWK脚本:

        BEGIN {table_name = -1;}
            { 
              if (table_name != $1) {
                  if (table_name != -1)
                      printf("</%s>\n", table_name);
                  table_name = $1;
                  printf("<%s>\n", table_name);
              }
              printf("\t<column>%s</column>\n",$2);
            }
        END { printf("</%s>\n", table_name); }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-12
          • 2015-03-14
          • 2017-04-18
          • 1970-01-01
          • 2011-04-26
          • 1970-01-01
          相关资源
          最近更新 更多