簡體   English   中英

從數組創建mysql表

[英]Create mysql table from array

使用 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).')';
}

但是我需要所有參數,而不僅僅是字段名稱、類型和其他參數。 如何正確操作?

由於您的基本要求是

如何使 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM