Làm cách nào tôi có thể tạo tập lệnh tạo bảng cho bảng hiện có trong phpmyadmin?
Làm cách nào tôi có thể tạo tập lệnh tạo bảng cho bảng hiện có trong phpmyadmin?
Câu trả lời:
Sử dụng truy vấn sau trong tab sql:
SHOW CREATE TABLE tablename
Để xem truy vấn đầy đủ Có siêu liên kết này có tên + Tùy chọn còn lại ở trên, Có chọn Toàn văn
Bước 1, tạo bảng, chèn một số hàng:
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
Bước 2, sử dụng lệnh kết xuất mysql:
mysqldump --no-data --skip-comments --host=your_database_hostname_or_ip.com -u your_username --password=your_password your_database_name penguins > penguins.sql
Bước 3, quan sát đầu ra trong 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 */;
Đầu ra bị lộn xộn bởi một số mã thông báo điều kiện thực thi ở trên và dưới. Bạn có thể lọc chúng ra nếu bạn không muốn chúng trong bước tiếp theo.
Bước 4 (Tùy chọn), lọc ra các mã thông báo điều kiện thực thi bổ sung theo cách này:
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
Sản phẩm nào tạo ra đầu ra cuối cùng:
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;
Chạy truy vấn là tab sql
HIỂN THỊ TẠO BẢNG Tên bảng
Bấm vào
+ Tùy chọn -> Chọn Toàn văn -> Nhấp vào Đi
Sao chép truy vấn Tạo bảng và dán vào nơi bạn muốn tạo bảng mới.
select * from information_schema.columns
where table_name = 'your_table' and table_schema = 'your_database'
Đây có thể là một trả lời muộn. Nhưng nó có thể giúp đỡ người khác. Nó rất đơn giản trong MY SQL Workbench (Tôi đang sử dụng Workbench phiên bản 6.3 và Phiên bản cộng đồng SQL phiên bản 5.1 của tôi): Nhấp chuột phải vào bảng mà bạn muốn tạo tập lệnh, chọn tùy chọn 'Sao chép vào Clipboard -> Tạo câu lệnh'. Chỉ cần dán vào bất kỳ trình soạn thảo văn bản nào bạn muốn lấy tập lệnh tạo.
Sử dụng chức năng PHP.
Tất nhiên chức năng truy vấn ($ this-> model) bạn phải thay đổi thành của riêng bạn.
/**
* 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);
}
Tôi tìm thấy một cách khác để xuất bảng trong tệp sql.
Giả sử bàn của tôi là abs_item_variations
abs_item_variations ->structure -> propose table structure -> export -> Go
Xuất toàn bộ cơ sở dữ liệu chọn định dạng dưới dạng SQL. Bây giờ, hãy mở tệp SQL mà bạn đã tải xuống bằng notepad, notepad ++ hoặc bất kỳ trình soạn thảo nào. Bạn sẽ thấy tất cả các bảng và chèn truy vấn của cơ sở dữ liệu của bạn. Tất cả các kịch bản sẽ có sẵn ở đó.