Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Bây giờ, tôi đang tạo bảng thứ hai và tôi sẽ sao chép dữ liệu của bảng đầu tiên sang bảng thứ hai. Tạo bảng thứ hai -

mysql> CREATE table SecondTable
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.69 sec)

Đây là truy vấn để tạo một bản sao -

mysql> INSERT INTO SecondTable (id,name)
-> select id,name from FirstTable;
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0

Để kiểm tra xem bản ghi có được sao chép hay không, chúng ta có thể kiểm tra secondTable với sự trợ giúp của câu lệnh SELECT -

Lệnh CREATE dùng để tạo bảng trong cơ sở dữ liệu ‘business’. Chúng tôi đang tạo một bảng mới ở đây

mysql> use business;
Database changed
mysql> create table OriginalTable
   -> (
   -> id int
   -> );
Query OK, 0 rows affected (0.46 sec)

Tạo một bảng mới trong cơ sở dữ liệu 'thử nghiệm'

mysql> use test;
Database changed
mysql> create table OriginalTable
   -> (
   -> id int
   -> );
Query OK, 0 rows affected (0.47 sec

Các bản ghi được chèn với sự trợ giúp của lệnh INSERT trong bảng đầu tiên

mysql> use business;
Database changed
mysql> insert into OriginalTable values(1),(2),(3),(4);
Query OK, 4 rows affected (0.18 sec)
Records: 4  Duplicates: 0  Warnings: 0

Để hiển thị tất cả các bản ghi

mysql> select *from OriginalTable;

Đây là đầu ra

+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

Để sao chép bảng trên từ cơ sở dữ liệu “kinh doanh” sang cơ sở dữ liệu khác “kiểm tra”

mysql>  INSERT INTO test.OriginalTable SELECT * from business.OriginalTable;
Query OK, 4 rows affected (0.20 sec)
Records: 4  Duplicates: 0  Warnings: 0

Để kiểm tra xem bảng đã được sao chép chưa

________số 8

Đầu ra sau đây cho thấy bảng “OriginalTable” đã được sao chép thành công vào cơ sở dữ liệu thứ hai

ID khách hàng Tên khách hàng Tên liên hệĐịa chỉThành phốMã bưu chínhQuốc gia1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Đức2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222Mexico D. F. 05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D. F. 05023Mexico

Và một lựa chọn từ bảng "Nhà cung cấp"

Nhà cung cấpIDNhà cung cấpTênLiên hệTênĐịa chỉThành phốMã bưu chínhQuốc gia1Chất lỏng kỳ lạCharlotte Cooper49 Gilbert St. LondonaEC1 4SDUK2New Orleans Cajun DelightsShelley BurkeP. O. Box 78934 New Orleans70117USA3 Trang trại của Bà Kelly Regina Murphy 707 Oxford Rd. Ann Arbor48104Mỹ



SQL CHÈN VÀO CHỌN Ví dụ

Câu lệnh SQL sau sao chép "Nhà cung cấp" thành "Khách hàng" (các cột không được điền dữ liệu sẽ chứa NULL)

Bài viết này giải thích quy trình sao chép bảng MySQL. Trong bài viết này, bạn sẽ tìm hiểu cách sao chép dữ liệu từ bảng này sang bảng khác. Các bảng này có thể nằm trong cùng một cơ sở dữ liệu hoặc các cơ sở dữ liệu khác nhau. Quá trình sao chép bảng MySQL có thể sao chép một tập dữ liệu cụ thể hoặc tất cả dữ liệu từ bảng nguồn sang bảng đích. Chúng tôi có thể sử dụng quy trình bảng sao chép MySQL để sao chép các sự cố xảy ra trên máy chủ sản xuất, giúp nhà phát triển khắc phục sự cố nhanh chóng

Để sao chép dữ liệu giữa các bảng, chúng ta sử dụng kết hợp câu lệnh CREATE TABLE và SELECT. Nếu bạn muốn sao chép tập dữ liệu cụ thể từ bảng, chúng tôi có thể lọc các bản ghi bằng cách thêm mệnh đề WHERE. Cú pháp sao chép bảng và dữ liệu như sau

1

TẠO BẢNG destination_table SELECT col_1,col_2, col_3.. từ source_table WHERE điều kiện

Trong cú pháp,

  1. destination_table. Chỉ định tên bảng đích. Chúng ta có thể tạo một bảng bằng cách sử dụng cấu trúc cột của bảng nguồn. Nếu bảng đích nằm trong cơ sở dữ liệu khác, bạn có thể sử dụng db_name.
    mysql> INSERT INTO SecondTable (id,name)
    -> select id,name from FirstTable;
    Query OK, 2 rows affected (0.17 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    0. Định dạng
    mysql> INSERT INTO SecondTable (id,name)
    -> select id,name from FirstTable;
    Query OK, 2 rows affected (0.17 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    1
    format
  2. tên cột dọc. Nếu bạn muốn điền vào các cột cụ thể từ bảng nguồn, bạn có thể chỉ định tên cột
  3. Source_table. Chỉ định tên bảng nguồn. Nếu bảng nguồn nằm trong một cơ sở dữ liệu khác, thì bạn có thể sử dụng db_name.
    mysql> INSERT INTO SecondTable (id,name)
    -> select id,name from FirstTable;
    Query OK, 2 rows affected (0.17 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    0. Định dạng
    mysql> INSERT INTO SecondTable (id,name)
    -> select id,name from FirstTable;
    Query OK, 2 rows affected (0.17 sec)
    Records: 2 Duplicates: 0 Warnings: 0
    1
    format
  4. Điều kiện, tình trạng, trạng thái. Chỉ định điều kiện để điền vào để lọc các bản ghi. Nếu bạn muốn sao chép tập dữ liệu cụ thể từ bảng nguồn, bạn có thể sử dụng mệnh đề WHERE

Khi bạn sao chép dữ liệu từ bảng nguồn sang bảng đích, MySQL sẽ thực hiện các nhiệm vụ sau

  1. Tạo một bảng mới với tên được chỉ định trong tham số Destination_table. Cấu trúc bảng đích chứa các cột mà câu lệnh SELECT đã trả về
  2. Sao chép dữ liệu từ bảng nguồn sang bảng đích

Bây giờ, chúng ta hãy xem một số ví dụ. Để trình diễn, chúng tôi sẽ sử dụng cơ sở dữ liệu Sakila. Chúng tôi đang sử dụng bàn làm việc của MySQL

ví dụ 1. Sao chép toàn bộ bảng có dữ liệu

Giả sử chúng ta muốn sao chép dữ liệu từ bảng movies sang bảng movies_backup. Để xem dữ liệu, hãy chạy bên dưới câu lệnh SELECT

1

Chọn * từ phim;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Để sao chép dữ liệu từ phim (bảng nguồn) sang bảng film_backup (đích)

1

tạo bảng movies_backup chọn * from movies;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Khi dữ liệu được sao chép, hãy chạy câu lệnh CHỌN để xem dữ liệu

1

Chọn * từ movies_backup;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Như bạn có thể thấy, cơ sở dữ liệu đã được sao chép vào bảng movies_backup

ví dụ 2. Sao chép một phần dữ liệu bằng mệnh đề WHERE

Giả sử bạn muốn tạo một bảng có danh sách các phim có xếp hạng NC-17. Trong ví dụ này, bảng nguồn là phim và bảng đích là tbl_movies_Rating_NC17. Để lọc dữ liệu, chúng tôi đang sử dụng mệnh đề WHERE trên cột xếp hạng

1

tạo bảng tbl_movies_Rating_NC17 chọn * from movies WHERE rating='NC-17';

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Khi dữ liệu đã được sao chép, hãy chạy câu lệnh CHỌN trên tbl_movies_rating_NC17

1

chọn * từ tbl_movies_Rating_NC17

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Như bạn có thể thấy, dữ liệu đã được sao chép

ví dụ 3. Sao chép các bảng giữa các cơ sở dữ liệu

Trong ví dụ này, chúng ta sẽ xem cách sao chép dữ liệu từ bảng nguồn sang bảng đích trong cơ sở dữ liệu khác. Để chứng minh, tôi đã tạo một cơ sở dữ liệu có tên là DEV_SakilaDB và chúng ta sẽ sao chép dữ liệu từ bảng actor của cơ sở dữ liệu sakila sang bảng tblActor của cơ sở dữ liệu DEV_SakilaDB

Truy vấn sau đây tạo cơ sở dữ liệu mới có tên DEV_SakilaDB

1

Tạo cơ sở dữ liệu DEV_SakilaDB;

Để sao chép dữ liệu, chúng tôi sẽ chạy truy vấn sau

1

tạo bảng `DEV_SakilaDB`.`máy đánh bóng` chọn * . from `sakila`.`diễn viên`;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Khi dữ liệu đã được sao chép, hãy chạy câu lệnh SELECT sau

1

chọn * từ `DEV_SakilaDB`.`máy đánh bóng`;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Như bạn có thể thấy, dữ liệu đã được sao chép vào

mysql> INSERT INTO SecondTable (id,name)
-> select id,name from FirstTable;
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0
5. bàn
mysql> INSERT INTO SecondTable (id,name)
-> select id,name from FirstTable;
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0
6

Ví dụ 4. Quá trình sao chép bảng MySQL để sao chép bảng

Khi chúng tôi sử dụng quy trình sao chép bảng MySQL bằng CREATE TABLE. Câu lệnh SELECT không tạo chỉ mục, ràng buộc, khóa chính, khóa ngoại liên kết với bảng nguồn. Nếu muốn sao chép bảng nguồn, chúng ta có thể sử dụng phương pháp sau

  1. Để tạo bảng, hãy sử dụng CREATE TABLE Destination_table LIKE source_table
  2. Để sao chép dữ liệu, hãy sử dụng INSERT INTO Destination_table SELECT * FROM source_table

Hãy để chúng tôi hiểu với một ví dụ đơn giản. Chúng tôi đang sử dụng bảng diễn viên. Để xem cấu trúc bảng, chúng ta có thể sử dụng câu lệnh SHOW CREATE TABLE [tbl_name]. Chạy truy vấn sau

1

HIỂN THỊ TẠO BẢNG diễn viên;

Sau đây là cấu trúc bảng của bảng actor

1

2

3

4

5

6

7

8

TẠO BẢNG `diễn viên` (

    `actor_id` smallint unsigned NOT NULL AUTO_INCREMENT,

    `first_name` varchar(45) NOT NULL,

    `last_name` varchar(45) NOT NULL,

    `last_update` dấu thời gian NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    CHÍNH CHÍNH KEY (`actor_id`),

    KEY `idx_actor_last_name` (`last_name`)

  ) ĐỘNG=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Bây giờ, chúng ta hãy chạy CREATE TABLE. Câu lệnh SELECT để sao chép dữ liệu. Bảng nguồn là diễn viên và bảng đích là tblActor_backup. Truy vấn đang theo sau

1

tạo bảng `tblActor_backup` select * from `actor`;

Khi dữ liệu đã được sao chép, hãy chạy câu lệnh SHOW CREATE TABLE để xem cấu trúc của bảng tblActor_backup

1

HIỂN THỊ TẠO BẢNG tblActor_backup;

Cấu trúc của bảng tblActor_backup như sau

1

2

3

4

5

6

TẠO BẢNG `tblactor_backup` (

    `actor_id` smallint unsigned NOT NULL DEFAULT '0',

    `first_name` varchar(45) NOT NULL,

    `last_name` varchar(45) NOT NULL,

    `last_update` dấu thời gian NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

) CÔNG DỤNG=InnoDB MẶC ĐỊNH CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Như bạn có thể thấy trong đoạn mã trên, khóa chính của bảng tblActor bị thiếu. Bây giờ, chúng ta hãy chạy CREATE TABLE. GIỐNG. lệnh tạo bảng

1

tạo bảng `tblActor_backup` LIKE `actor`;

Khi dữ liệu đã được sao chép, hãy chạy SHOW CREATE TABLE để xem cấu trúc của bảng tblActor_backup

1

HIỂN THỊ TẠO BẢNG `tblActor_backup`;

1

2

3

4

5

6

7

8

TẠO BẢNG `tblactor_backup` (

    `actor_id` smallint unsigned NOT NULL AUTO_INCREMENT,

    `first_name` varchar(45) NOT NULL,

    `last_name` varchar(45) NOT NULL,

    `last_update` dấu thời gian NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    CHÍNH CHÍNH KEY (`actor_id`),

    KEY `idx_actor_last_name` (`last_name`)

) CÔNG DỤNG=InnoDB MẶC ĐỊNH CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

Như bạn có thể thấy, tập lệnh CREATE TABLE có khóa chính

Bây giờ hãy chạy INSERT INTO. Câu lệnh SELECT để chèn dữ liệu từ bảng nguồn vào bảng đích

1

CHÈN VÀO `tblActor_backup` select * from `actor`;

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Chạy câu lệnh SELECT để xem dữ liệu

1

Chọn * từ `tblActor_backup`

Đầu ra truy vấn

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?
Làm cách nào để sao chép dữ liệu từ bảng này sang bảng khác trong mysql?

Như bạn có thể thấy, dữ liệu đã được sao chép vào bảng tblActor_backup

Tóm lược

Trong bài viết này, chúng ta đã tìm hiểu về quy trình sao chép bảng MySQL. Để sao chép, chúng ta có thể sử dụng CREATE TABLE. câu lệnh CHỌN. Chúng ta cũng đã học câu lệnh CREATE TABLE USING để tạo một bản sao của bảng nguồn và sử dụng câu lệnh INSERT INTO SELECT để sao chép dữ liệu. Chúng tôi đã học các phương pháp này bằng các ví dụ khác nhau

Làm cách nào để sao chép dữ liệu từ bảng này sang bảng mới khác trong SQL?

Câu lệnh INSERT INTO SELECT sao chép dữ liệu từ một bảng và chèn vào một bảng khác. Câu lệnh INSERT INTO SELECT yêu cầu kiểu dữ liệu trong bảng nguồn và bảng đích khớp với nhau. Ghi chú. Các bản ghi hiện có trong bảng mục tiêu không bị ảnh hưởng.

Làm cách nào để sao chép dữ liệu từ MySQL?

Chúng ta cần làm theo các bước sau để sao chép cơ sở dữ liệu sang cơ sở dữ liệu khác. .
Đầu tiên, sử dụng câu lệnh CREATE DATABASE để tạo cơ sở dữ liệu mới
Thứ hai, lưu trữ dữ liệu vào tệp SQL. .
Thứ ba, xuất tất cả các đối tượng cơ sở dữ liệu cùng với dữ liệu của nó để sao chép bằng công cụ mysqldump rồi nhập tệp này vào cơ sở dữ liệu mới

Cách nhanh nhất để sao chép dữ liệu từ bảng này sang bảng khác là gì?

Sử dụng tìm nạp nhiều hàng SQL là cách nhanh nhất để sao chép dữ liệu từ bảng này sang bảng khác (tôi ngạc nhiên là tốc độ này nhanh hơn nhiều so với CPYF). Sử dụng VARCHAR chậm hơn chỉ là CHAR thẳng (không ngạc nhiên).