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