日期:2014-05-16  浏览次数:20793 次

获取mysql列名以及复制mysql的表记录
    因为调试程序分页效果需要快速的添加一些记录,复制当然是最方便的方法:
insert into table1(f1,f2) select f1,f2 from table1 where id < 10;


    但是几个字段的话还好说,要是有几十个字段,那不就有点.....

    也许有更巧妙的复制记录的方法,但如果参照以上方法的话,下一步工作就是快速方便的获取到“列名”。 当然通过JAVA或PHP程序进行处理的话也是可以的,但是sql语句本身也有一些有趣的办法可以得到。
    假定我这里的表名是“hugetable”,首先熟悉的获取表信息的方法有:
SHOW COLUMNS FROM hugetable;
DESCRIBE hugetable;

    但是他们得到的结果是类似以下:
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| Id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name       | char(35) | NO   |     |         |                |
| Country    | char(3)  | NO   | UNI |         |                |

    而我暂时想要的仅仅是column name而已。
   
    于是找到下面的一个语句,可以实现这个要求:
select column_name from information_schema.columns where table_name='hugetable';  


    当然将这些结果集的field values拷贝出来后,还需要一些正则替换,
    将 单引号 ’  替换为 空白
    将 回车符 \n 替换为 逗号,

    现在得到的字串就满足需求了 :-)

    抛块砖,希望遇见更好的方法 :-)