[mysql] phpmyadmin에서 기존 테이블에 대한 테이블 생성 스크립트를 생성하는 방법은 무엇입니까?
phpmyadmin에서 기존 테이블에 대한 테이블 생성 스크립트를 생성하려면 어떻게해야합니까?
답변
SQL 탭에서 다음 쿼리를 사용하십시오.
SHOW CREATE TABLE tablename
전체 쿼리를 보려면 위의 + Options라는 하이퍼 링크가 있습니다. 전체 텍스트를 선택하십시오.
답변
SHOW CREATE TABLE <table name>
쿼리를 실행하십시오 .
답변
Mysqladmin은 테이블 생성 스크립트를 저장하는 작업을 수행 할 수 있습니다.
1 단계, 테이블을 만들고 행을 삽입하십시오.
create table penguins (id int primary key, myval varchar(50))
insert into penguins values(2, 'werrhhrrhrh')
insert into penguins values(25, 'weeehehehehe')
select * from penguins
2 단계 : mysql dump 명령을 사용하십시오.
mysqldump --no-data --skip-comments --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
3 단계 : penguins.sql의 출력을 관찰하십시오.
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `penguins`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
출력은 위와 아래의 여러 실행 조건 토큰에 의해 복잡해집니다. 다음 단계에서 원하지 않으면 필터링 할 수 있습니다.
4 단계 (선택 사항)에서 이러한 추가 실행 조건 토큰을 다음과 같이 필터링하십시오.
mysqldump --no-data --skip-comments --compact --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
최종 출력을 생성합니다.
eric@dev /home/el $ cat penguins.sql
DROP TABLE IF EXISTS `penguins`;
CREATE TABLE `penguins` (
`id` int(11) NOT NULL,
`myval` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
답변
쿼리 실행은 SQL 탭입니다
CREATE TABLE 테이블 이름 표시
클릭
+ 옵션-> 전체 텍스트 선택-> 이동을 클릭하십시오.
Create Table 쿼리를 복사하고 새 테이블을 만들 위치에 붙여 넣습니다.
답변
information_schema.columns를 직접 쿼리하십시오.
select * from information_schema.columns
where table_name = 'your_table' and table_schema = 'your_database'
답변
답장이 늦을 수 있습니다. 그러나 다른 사람들에게 도움이 될 수 있습니다. MY SQL Workbench에서 매우 간단합니다 (Workbench 버전 6.3 및 My SQL Version 5.1 Community Edition을 사용하고 있습니다). 스크립트 작성하려는 테이블을 마우스 오른쪽 단추로 클릭하고 ‘클립 보드에 복사-> 명령문 작성’옵션을 선택하십시오. 작성 스크립트를 가져 오려는 텍스트 편집기에 붙여 넣기 만하면됩니다.
답변
PHP 함수 사용하기.
물론 쿼리 기능 ($ this-> model)은 자신의 것으로 변경해야합니다.
/**
* Creating a copy table based on the current one
*
* @param type $table_to_copy
* @param type $new_table_name
* @return type
* @throws Exception
*/
public function create($table_to_copy, $new_table_name)
{
$sql = "SHOW CREATE TABLE ".$table_to_copy;
$res = $this->model->queryRow($sql, PDO::FETCH_ASSOC);
if(!filled($res['Create Table']))
throw new Exception('Could not get the create code for '.$table_to_copy);
$newCreateSql = preg_replace(array(
'@CREATE TABLE `'.$table_to_copy.'`@',
'@KEY `'.$table_to_copy.'(.*?)`@',
'@CONSTRAINT `'.$table_to_copy.'(.*?)`@',
'@AUTO_INCREMENT=(.*?) @',
), array(
'CREATE TABLE `'.$new_table_name.'`',
'KEY `'.$new_table_name.'$1`',
'CONSTRAINT `'.$new_table_name.'$1`',
'AUTO_INCREMENT=1 ',
), $res['Create Table']);
return $this->model->exec($newCreateSql);
}