Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में अलग संरचना वाली टेबल से दूसरी टेबल में डेटा कैसे डालें?

अलग-अलग संरचना वाली टेबल्स के बीच डेटा स्थानांतरित करना

MySQL में INSERT INTO SELECT स्टेटमेंट का उपयोग करके आप एक टेबल से दूसरी टेबल में डेटा कॉपी कर सकते हैं, भले ही उनकी संरचना अलग हो। कॉलम नाम और क्रम मिलान करने की आवश्यकता है, लेकिन टेबल परिभाषाएं भिन्न हो सकती हैं।

स्रोत टेबल बनाना (DemoTable1)

mysql> CREATE TABLE DemoTable1 (
    -> PersonId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> PersonName VARCHAR(20),
    -> PersonAge INT,
    -> PersonCountryName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.55 sec)

स्रोत टेबल में डेटा डालना

mysql> INSERT INTO DemoTable1(PersonName,PersonAge,PersonCountryName) VALUES ('Chris Brown',24,'US');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable1(PersonName,PersonAge,PersonCountryName) VALUES ('John Doe',26,'UK');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable1(PersonName,PersonAge,PersonCountryName) VALUES ('David Miller',23,'AUS');
Query OK, 1 row affected (0.10 sec)

स्रोत टेबल के रिकॉर्ड्स

mysql> SELECT * FROM DemoTable1;
+----------+--------------+-----------+-------------------+
| PersonId | PersonName   | PersonAge | PersonCountryName |
+----------+--------------+-----------+-------------------+
|        1 | Chris Brown  |        24 | US                |
|        2 | John Doe     |        26 | UK                |
|        3 | David Miller |        23 | AUS               |
+----------+--------------+-----------+-------------------+
3 rows in set (0.00 sec)

लक्ष्य टेबल बनाना (DemoTable2) - अलग संरचना

mysql> CREATE TABLE DemoTable2 (
    -> EmployeeId INT,
    -> EmployeeFullName VARCHAR(30),
    -> EmployeeAge INT,
    -> EmployeeCountryName VARCHAR(20),
    -> EmployeeSalary INT DEFAULT 20000
    -> );
Query OK, 0 rows affected (0.52 sec)

महत्वपूर्ण अंतर

  • कॉलम नाम अलग हैं (PersonId → EmployeeId, PersonName → EmployeeFullName, आदि)
  • लक्ष्य टेबल में एक अतिरिक्त कॉलम है (EmployeeSalary) जिसका डिफ़ॉल्ट मान है
  • डेटा प्रकार संगत हैं लेकिन समान नहीं हैं (VARCHAR लंबाई अलग)

डेटा स्थानांतरित करने का क्वेरी

mysql> INSERT INTO DemoTable2(EmployeeId,EmployeeFullName,EmployeeAge,EmployeeCountryName)
    -> SELECT PersonId,PersonName,PersonAge,PersonCountryName FROM DemoTable1;
Query OK, 3 rows affected (0.26 sec)
Records: 3  Duplicates: 0  Warnings: 0

लक्ष्य टेबल के परिणाम

mysql> SELECT * FROM DemoTable2;
+------------+------------------+-------------+---------------------+----------------+
| EmployeeId | EmployeeFullName | EmployeeAge | EmployeeCountryName | EmployeeSalary |
+------------+------------------+-------------+---------------------+----------------+
|          1 | Chris Brown      |          24 | US                  |          20000 |
|          2 | John Doe         |          26 | UK                  |          20000 |
|          3 | David Miller     |          23 | AUS                 |          20000 |
+------------+------------------+-------------+---------------------+----------------+
3 rows in set (0.00 sec)

मुख्य बिंदु

  • कॉलम सूची में क्रम SELECT कथन के कॉलम क्रम से मेल खाना चाहिए
  • लक्ष्य टेबल में अतिरिक्त कॉलम्स के डिफ़ॉल्ट मान होने चाहिए या NULL स्वीकार करना चाहिए
  • डेटा प्रकार संगत होने चाहिए (INT से INT, VARCHAR से VARCHAR)
  • AUTO_INCREMENT कॉलम को स्पष्ट रूप से मान प्रदान करके ओवरराइड किया जा सकता है

सर्वोत्तम अभ्यास

  1. कॉलम नामों को स्पष्ट रूप से सूचीबद्ध करें (SELECT * से बचें)
  2. डेटा प्रकार संगतता सत्यापित करें
  3. बड़े डेटासेट के लिए बैच प्रोसेसिंग पर विचार करें
  4. लेनदेन (ट्रांजैक्शन) का उपयोग करें यदि एटॉमिसिटी आवश्यक है
  1. Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें Java का उपयोग करके MySQL टेबल में रिकॉर्ड डालें

    JDBC Statement या PreparedStatement का उपयोग करके Java एप्लिकेशन से MySQL में रिकॉर्ड डालें। टेबल बनाना CREATE TABLE DemoTable( Id INT, Name VARCHAR(30), CountryName VARCHAR(30), Age INT ); Query OK, 0 rows affected (0.66 sec) Java कोड (Statement) 0) { System.out.

  1. - MySQL में INSERT INTO SELECT से दूसरी टेबल के मान लेकर नई टेबल भरें

    सिंटैक्स insert into targetTable(col1, col2) select sourceCol1, sourceCol2 from sourceTable where condition; उदाहरण insert into demo83(id,username) select id,name from demo82 where id=101; परिणाम +------+----------+ | id | username | +------+----------+ | 101 | Bob | | 101 | David |

  1. - MySQL में एक टेबल से दूसरी टेबल में डेटा सम्मिलित करना

    परिचय MySQL में INSERT INTO ... SELECT स्टेटमेंट का उपयोग करके एक टेबल से डेटा चुनकर दूसरी टेबल में सम्मिलित किया जा सकता है। पहली टेबल निर्माण और डेटा select * from DemoTable1; +------+-----------+ | Id | FirstName | +------+-----------+ | 101 | Adam | | 102 | John | +------+-------