Làm cách nào để tạo tập lệnh tạo bảng cho bảng hiện có trong phpmyadmin?


246

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:


513

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


1
Có cách nào để chỉ định cơ sở dữ liệu nào, ví dụ nếu bạn có nhiều cơ sở dữ liệu chứa cùng một tablename không? Hay là không thể?
Davos

6
@Davos sử dụng cái này, hiển thị tạo bảng cơ sở dữ liệu_name.tablename.
Fahad Anjum

Cảm ơn, đây là những gì tôi muốn
astrosixer

Có đối số nào tôi có thể thêm để xuất nó vào một tệp không?
Dân.

40

Chạy SHOW CREATE TABLE <table name>truy vấn.


4
+1. Lưu ý: nếu chạy truy vấn từ dòng lệnh, ;ở cuối là bắt buộc.
Giữ lại

15

Mysqladmin có thể thực hiện công việc lưu tập lệnh tạo bảng.

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;

9

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.


Cảm ơn về mẹo hiển thị toàn văn, không chắc tại sao nó bị cắt cho đến khi tôi thấy câu trả lời của bạn.
Dymas

@Dymas bạn phải chọn văn bản đầy đủ để hiển thị truy vấn đầy đủ. tôi đã làm tương tự để xem truy vấn đầy đủ.
Samir Mangroliya

7

Truy vấn thông tin_schema.columns trực tiếp:

select * from information_schema.columns 
where table_name = 'your_table' and table_schema = 'your_database'

2

Đâ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.


0

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);
}

0

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

0

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 ở đó.


-2

Một cách nữa. Chọn bảng mục tiêu trong bảng điều khiển bên trái trong phpMyAdmin, nhấp vào tab Xuất, bỏ chọn Khối dữ liệu và nhấp vào nút Bắt đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.