簡體   English   中英

從創建表 sql 獲取表名

[英]Get table name from create table sql

現在我想從創建表 sql 中獲取表名,比如

CREATE TABLE `engineers` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `email` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `birth` datetime,
  PRIMARY KEY (`id`),
  INDEX(`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

或者

CREATE TABLE IF NOT EXISTS .....

如果您可以查詢數據庫服務器的information_schema ,那么您可以從以下查詢的結果中訪問您的表名。

select  table_name,
        create_time AS `Time` 
from information_schema.tables 
where table_schema = @dbName
order by create_time desc 
limit 1

這應該在表創建完成后立即運行

table_name      Time
table_20200815  15.08.2020 12:06:25

演示

這是在 php 中,但應該很容易轉換為 ruby。 假設 Create 語句在 $sql...

[編輯允許“(”跟隨表名,並修復 strpos()中的參數順序]

    $tablename = trim(substring($sql,strpos($sql,"TABLE IF NOT EXISTS") === 0 ? strpos($sql,"TABLE") + 5 : strpos($sql,"TABLE IF NOT EXISTS") + 20));
    $tablename = substring($tablename,0,strpos($tablename,strpos($tablename," ") < strpos($tablename,"(") ? " " : "("));

然后測試並去除反引號(如果有的話)。

暫無
暫無

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

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