[英]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.