Hướng dẫn how do i transfer data from one schema to another in mysql? - làm cách nào để chuyển dữ liệu từ lược đồ này sang lược đồ khác trong mysql?

Đó là hơi muộn nhưng chỉ cần phải giải quyết vấn đề tương tự, đây là quy trình được lưu trữ mà tôi đã đưa ra, trong trường hợp nó giúp người khác:

CREATE DEFINER=`whoever`@`wherever` PROCEDURE `copy_schema`[
    IN in_oldDB varchar[256],
    IN in_newDB varchar[256],
    IN in_copyData int[1]
]
BEGIN

DECLARE v_finished INTEGER DEFAULT 0;
DECLARE v_tname varchar[100] DEFAULT "";

DECLARE curTable CURSOR FOR 
SELECT `table_name`
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = in_oldDB
and TABLE_TYPE='BASE TABLE'
;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1;

set @result=NULL;

# Create new schema if it doesn't exist
SET @sql = CONCAT['CREATE SCHEMA IF NOT EXISTS ',in_newDB,';'];
PREPARE create_schema FROM @sql;
EXECUTE create_schema;
DEALLOCATE PREPARE create_schema;

# Loop over tables in old schema
OPEN curTable;
clone_tables: LOOP

# get next table name
FETCH curTable INTO v_tname;

# Quit if we're done
IF v_finished = 1 THEN LEAVE clone_tables; END IF;

# Clone the table
SET @sql = CONCAT["CREATE TABLE `", in_newDB, "`.`", v_tname, "` LIKE `", in_oldDB, "`.`", v_tname, "`;"];
PREPARE clone_table FROM @sql;
EXECUTE clone_table;
DEALLOCATE PREPARE clone_table;

# Optionally copy data
#select v_tname; # This just gives some feedback in workbench for long-running copies
IF [in_copyData > 0] THEN
    SET @sql = CONCAT["INSERT INTO `", in_newDB, "`.`", v_tname, "` SELECT * FROM `", in_oldDB, "`.`", v_tname, "`;"];
    PREPARE clone_data FROM @sql;
    EXECUTE clone_data;
    DEALLOCATE PREPARE clone_data;
END IF;

# Result message
SET @result = IFNULL[CONCAT[@result,',',v_tname],v_tname];

END LOOP clone_tables;

# Close cursor
CLOSE curTable;

# Print result message
SELECT CONCAT["Copied the following tables from ", in_oldDB, " to ", in_newDB, ": ", @result];

END

Để chèn dữ liệu từ sơ đồ này sang sơ đồ khác, cú pháp như sau. Ở đây, chúng tôi có hai cơ sở dữ liệu của YourDatabasename1 và và YourDatabasename2, - - -

insert into yourDatabaseName2.yourTableName2 select *from yourDatabaseName1.yourTableName1;

Để hiểu cú pháp trên, chúng ta hãy tạo bảng. Chúng tôi đang tạo một bảng trong cơ sở dữ liệu Web Web - -

mysql> create table DemoTable2020
   -> [
   -> Id int,
   -> Name varchar[20]
   -> ];
Query OK, 0 rows affected [0.67 sec]

Chèn một số bản ghi trong bảng bằng lệnh chèn -

mysql> insert into DemoTable2020 values[101,'Chris'];
Query OK, 1 row affected [0.12 sec]

mysql> insert into DemoTable2020 values[102,'David'];
Query OK, 1 row affected [0.25 sec]

mysql> insert into DemoTable2020 values[103,'Mike'];
Query OK, 1 row affected [0.11 sec]

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn -

mysql> select *from DemoTable2020;

Điều này sẽ tạo ra đầu ra sau -

+------+-------+
| Id   | Name  |
+------+-------+
| 101  | Chris |
| 102  | David |
| 103  | Mike  |
+------+-------+
3 rows in set [0.00 sec]

Dưới đây là truy vấn để tạo bảng thứ hai trong một cơ sở dữ liệu khác.

mysql> use test;
Database changed
mysql> create table DemoTable2021
   -> [
   -> StudentId int,
   -> StudentName varchar[20]
   -> ];
Query OK, 0 rows affected [0.60 sec]

Dưới đây là truy vấn cho MySQL chèn dữ liệu từ lược đồ này sang lược đồ khác -

mysql> insert into test.DemoTable2021 select *from web.DemoTable2020;
Query OK, 3 rows affected [0.18 sec]
Records: 3 Duplicates: 0 Warnings: 0

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn -

mysql> select *from DemoTable2021;

Điều này sẽ tạo ra đầu ra sau -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 101       | Chris       |
| 102       | David       |
| 103       | Mike        |
+-----------+-------------+
3 rows in set [0.00 sec]

Dưới đây là truy vấn để tạo bảng thứ hai trong một cơ sở dữ liệu khác.

  • Dưới đây là truy vấn cho MySQL chèn dữ liệu từ lược đồ này sang lược đồ khác -
  • Cập nhật vào ngày 06 tháng 4 năm 2020 13:20:37
  • Câu hỏi và câu trả lời liên quan
  • Chèn dữ liệu từ bảng này sang bảng khác trong MySQL?
  • Câu lệnh MySQL để sao chép dữ liệu từ một bảng và chèn vào một bảng khác
  • Lấy tất cả các bản ghi từ một bảng MySQL và chèn nó cho một bản khác?
  • Truy vấn MySQL để chèn dữ liệu từ một bảng khác được hợp nhất với các hằng số?
  • Cập nhật dữ liệu trong một bảng từ dữ liệu trong một bảng khác trong MySQL?
  • Làm thế nào để chèn các giá trị từ bảng này sang bảng khác trong PostgreSQL?
  • Cách đơn giản nhất để sao chép dữ liệu từ bảng này sang bảng mới khác trong MySQL?
  • Làm thế nào để sao chép dữ liệu từ trường này sang trường khác trên mỗi hàng trong MySQL?
  • Gửi dữ liệu từ đoạn này sang đoạn khác bằng cách sử dụng Kotlin?
  • Di chuyển các hàng từ bảng này sang bảng khác trong MySQL?
  • Làm thế nào để trừ một khung dữ liệu từ một khung khác trong r?
  • JQuery Mobile: Gửi dữ liệu từ trang này sang trang khác
  • Chuyển dữ liệu từ báo cáo này sang báo cáo khác trong ABAP bằng cách sử dụng

Bài Viết Liên Quan

Chủ Đề