【问题标题】:Create mysql table from array从数组创建mysql表
【发布时间】:2018-03-19 19:11:09
【问题描述】:

使用 SHOW TABLE 然后 SHOW FULL COLUMNS 我得到了这个数组

Array
(
[tabel_de_test] => Array
  (
    [0] => Array
        (
            [Field] => id
            [Type] => int(11)
            [Collation] => 
            [Null] => NO
            [Key] => PRI
            [Default] => 
            [Extra] => auto_increment
            [Privileges] => select,insert,update,references
            [Comment] => comentariu
        )
    [1] => Array
        (
            [Field] => numee
            [Type] => varchar(100)
            [Collation] => utf8_unicode_ci
            [Null] => NO
            [Key] => 
            [Default] => 
            [Extra] => 
            [Privileges] => select,insert,update,references
            [Comment] => 
        )
    )
)

我试图用一个函数把它放回mysql

function tosql($tbl_name,$fields)
{
    foreach($fields as $f_id => $f_arr)
    {
      $in.=''.$f_arr['Field'].' '.$f_arr['Type'].' '.$f_arr['Extra'].',';
    }
return 'CREATE TABLE '.$tbl_name.' ('.trim($in).')';
}

但是我需要所有参数,而不仅仅是字段名称、类型和其他参数。 怎么做才合适?

【问题讨论】:

  • 您的查询失败,您需要找出原因。这样做,你会看到错误。
  • 解释你的评论!
  • @Blag 你能在你的例子中指出把排序规则和权限放在哪里吗?
  • SHOW CREATE TABLE my_target_table 打印完整的 sql 来创建表,因为我相信你在追求它?

标签: php mysql sql create-table


【解决方案1】:

因为您的基本要求是

如何使SQL生成现有表?

我会直接回答这个问题。


SQL 提供了一个非常有用的查询 (doc):

SHOW CREATE TABLE my_target_table

这会让你打印出类似的东西:

CREATE TABLE `engine_cost` (
 `engine_name` varchar(64) NOT NULL,
 `device_type` int(11) NOT NULL,
 `cost_name` varchar(64) NOT NULL,
 `cost_value` float DEFAULT NULL,
 `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `comment` varchar(1024) DEFAULT NULL,
 PRIMARY KEY (`cost_name`,`engine_name`,`device_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0

/!\小心,这不会导出可能绑定在桌子上的触发器

使用

SELECT trigger_name 
FROM information_schema.triggers 
WHERE EVENT_OBJECT_TABLE='my_target_table';

还有

SHOW CREATE TRIGGER my_target_trigger

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2022-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多