SHOW CREATE TABLE tblname - аналог только для выбранных полей?

Copenhagen

Новичок
Как можно получить результат, аналогичный SHOW CREATE TABLE tblname, но только для выбранных (не всех) полей?
 

Copenhagen

Новичок
С одного места в другое надо скопировать таблицу частично, не все поля.
Данные скопировать легко, а структуру таблицы не знаю как.
 

ksnk

прохожий
получить с помощью `show create table XXX` запрос на создание и выкинуть из него ненужные поля регуляркой.
Что известно? Список полей, которые нужно сохранять?
 

Copenhagen

Новичок
Поля естественно известны.
Такой вариант можно сделать, но в таком случае удалять информацию о полях надо из нескольких мест (из перечисления полей, ключей, запись autoincrement) и следить, чтобы запрос не рассыпался. Просто на мой взгляд я не первый человек, кому понадобилось такое. И должно быть решение получше.
 

ksnk

прохожий
PHP:
$x="CREATE TABLE `forum_tree` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `pid` int(10) NOT NULL DEFAULT '0',
 `lid` int(10) NOT NULL DEFAULT '0',
 `rid` int(10) NOT NULL DEFAULT '0',
 `level` int(10) NOT NULL DEFAULT '0',
 `name` varchar(255) NOT NULL DEFAULT '',
 `page` int(11) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 KEY `name` (`name`),
 KEY `page` (`page`)
) ENGINE=MyISAM AUTO_INCREMENT=102 DEFAULT CHARSET=cp1251";

$array=array('id','name','level');
$reg='/^.*`(?:'.implode('|',$array).')`.*$/m';

preg_match_all($reg,$x,$m);
print_r($m);
Array
(
[0] => Array
(
[0] => `id` int(10) NOT NULL AUTO_INCREMENT,
[1] => `level` int(10) NOT NULL DEFAULT '0',
[2] => `name` varchar(255) NOT NULL DEFAULT '',
[3] => PRIMARY KEY (`id`),
[4] => KEY `name` (`name`),
)

)
2 строчки, вроде достаточно просто? И ключи на месте, которые есть...
 
Сверху