如何将多个INSERT SQL语句转换为一个语句

时间:2019-02-28 11:51:43

标签: mysql sql sqlite

我有一个包含100个INSERT语句的SQL文件(请参见下面的示例),该文件用于创建SQLITE数据库。我现在正在创建一个MySQL数据库,并希望将此代码转换为单个INSERT语句(下面的示例。)

我这样做的主要原因是使它看起来更好一点。我希望会有一个不错的在线转换器,但一直无法在这里找到建议。

当前的SQL文件有数千个:

insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('955773', 'Mrs', 'Valle', 'Keave', '95380', 'Gale', 'Helena', 'Montana', '59623', '406-989-2003', 'vkeave0@shareasale.com', 'grow world-class deliverables');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('818817', 'Mrs', 'Melessa', 'Parmby', '914', 'Fairview', 'Montgomery', 'Alabama', '36114', '334-255-3054', 'mparmby1@addtoany.com', 'iterate seamless schemas');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('896697', 'Mrs', 'Cecil', 'Capsey', '05', 'Bay', 'Mesa', 'Arizona', '85215', '602-646-6128', 'ccapsey2@cnet.com', 'implement revolutionary functionalities');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('871100', 'Rev', 'Morgun', 'Coppeard', '049', 'High Crossing', 'Spokane', 'Washington', '99220', '509-838-3291', 'mcoppeard3@facebook.com', 'empower 24/365 users');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('589912', 'Mr', 'Ginger', 'Annandale', '7', 'Clove', 'Dayton', 'Ohio', '45403', '937-265-6244', 'gannandale4@nasa.gov', 'integrate clicks-and-mortar content');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('074451', 'Honorable', 'Nomi', 'Messitt', '402', 'Pond', 'Salt Lake City', 'Utah', '84115', '801-761-3351', 'nmessitt5@statcounter.com', 'empower dot-com channels');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('321380', 'Mr', 'Cris', 'De Giovanni', '7', 'Northland', 'Kansas City', 'Missouri', '64199', '816-646-5785', 'cdegiovanni6@uol.com.br', 'envisioneer intuitive paradigms');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('006367', 'Ms', 'Sherye', 'Commin', '72099', 'Crescent Oaks', 'Toledo', 'Ohio', '43666', '419-663-9711', 'scommin7@livejournal.com', 'visualize collaborative e-tailers');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('587714', 'Mr', 'Phedra', 'Scone', '478', 'Monterey', 'San Francisco', 'California', '94105', '310-116-1148', 'pscone8@myspace.com', 'matrix seamless bandwidth');
insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes) values ('801027', 'Mrs', 'Bayard', 'Brindley', '76049', 'Duke', 'El Paso', 'Texas', '79968', '915-207-0519', 'bbrindley9@mysql.com', 'visualize enterprise networks');

我想要实现的目标:

INSERT INTO
  customer (
    customer_id,
    customer_title,
    customer_forename,
    customer_surname,
    customer_address_1,
    customer_address_2,
    customer_town_city,
    customer_county,
    customer_postcode,
    customer_telephone_number,
    customer_email_address,
    customer_notes
  )
VALUES
  (
    1001,
    1002,
    1003,
    1004,
    1005,
    1006,
    1007,
    1008,
    1009,
    1010
  ),
  (
    'MR',
    'MR',
    'MR',
    'MR',
    'MR',
    'MR',
    'MR',
    'MR',
    'MR',
    'MR'
  ),
  (
    'Thomas',
    'Ben',
    'Rob',
    'Morgan',
    'Joe',
    'Samee',
    'Kitty',
    'Cameron',
    'Frank',
    'Eric'
  ),
  (
    'Masters',
    'Willy',
    'Norris',
    'Porch',
    'Mkoji',
    'Chouds',
    'Lewis',
    'Brooks',
    'Brown',
    'Cartman'
  ),
  (
    '6 Garthland Rd',
    '38 Downham Chase',
    '32 Bramside',
    '10 Rich Hill',
    '8 StockyP',
    '11 Hyde Rd',
    '18 BuzzinLa',
    '1 The Hills',
    '55 Pengting Rd',
    '10 Southpark'
  ),
  (
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies',
    'All Lies'
  ),
  (
    'Hazel Grove',
    'Timperley',
    'Bramhall',
    'Cheadle Hulme',
    'Stockport',
    'Hyde',
    'Liverpool',
    'New Mills',
    'Bolton',
    'Colorado'
  ),
  (
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County',
    'Some County'
  ),
  (
    'SK7 4NA',
    'SK12 1EF',
    'M4 1HJ',
    'NK7 6HG',
    'PK9 8II',
    'SW1A 1AA',
    'HG8 8IK',
    'HJ87 JKK',
    'SK12 1QJ',
    'N8 7HJ'
  ),
  (
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408',
    '07704768408'
  ),
  (
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM',
    'LIE@MADEUP.COM'
  ),
  (
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.',
    'Here are some notes.'
  );

如果对此有个快速解决方法,请告诉我。现在已被标记为重复项的问题是相同的。该问题与查询速度有关,这与将一种格式转换为另一种格式有关。

5 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作插入多个记录:

INSERT INTO customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes)
VALUES ('955773', 'Mrs', 'Valle', 'Keave', '95380', 'Gale', 'Helena', 'Montana', '59623', '406-989-2003', 'vkeave0@shareasale.com', 'grow world-class deliverables'),
('818817', 'Mrs', 'Melessa', 'Parmby', '914', 'Fairview', 'Montgomery', 'Alabama', '36114', '334-255-3054', 'mparmby1@addtoany.com', 'iterate seamless schemas'),
.
.
.
.
.
('801027', 'Mrs', 'Bayard', 'Brindley', '76049', 'Duke', 'El Paso', 'Texas', '79968', '915-207-0519', 'bbrindley9@mysql.com', 'visualize enterprise networks');

您必须用逗号分隔每个新条目:VALUES(.....), (........),,然后最后一个条目将以分号结尾:(......);

答案 1 :(得分:0)

insert支持values的多个值。这不适合您吗?

insert into customer (customer_id, customer_title, customer_forename, customer_surname, customer_address_1, customer_address_2, customer_town_city, customer_county, customer_postcode, customer_telephone_number, customer_email_address, customer_notes)
    values ('955773', 'Mrs', 'Valle', 'Keave', '95380', 'Gale', 'Helena', 'Montana', '59623', '406-989-2003', 'vkeave0@shareasale.com', 'grow world-class deliverables'),
           ('818817', 'Mrs', 'Melessa', 'Parmby', '914', 'Fairview', 'Montgomery', 'Alabama', '36114', '334-255-3054', 'mparmby1@addtoany.com', 'iterate seamless schemas')
           . . .

因此,您可以在单个insert中插入多个。但是,您不能逐列插入数据。

答案 2 :(得分:0)

您可以插入,但必须在值的最后部分插入分号,并在每个值的最后一个值部分之前插入逗号EX:

   INSERT INTO [dbo].[tbl_Page]
       ([PageTitle]
       ,[Link]
       ,[Status]
       ,[CreatedDate]
       ,[Description])
 VALUES
       ('demo','demo',1,'12/11/2019','demo'),
       ('demo','demo',1,'12/11/2019','demo'),
       ('demo','demo',1,'12/11/2019','demo'),
       ('demo','demo',1,'12/11/2019','demo'),
       ('demo','demo',1,'12/11/2019','demo');

经过测试

See Image

答案 3 :(得分:0)

您可以使用phpMyAdmin(https://www.phpmyadmin.net/)来实现,只需选择导出表然后导出即可。

https://i.stack.imgur.com/lLrO5.jpg

https://i.stack.imgur.com/ZbJ8R.jpg

答案 4 :(得分:0)

使用PHP查看以下解决方案,您可以使用数组形式的插入列表,然后您可以指定每个插入组的计数 我使用了 2 个函数

  • get_string_between 函数

  • joinInsertQueriesFromArray 函数

     function get_string_between($string, $start, $end){
             $string = ' ' . $string;
             $ini = strpos($string, $start);
             if ($ini == 0) return '';
             $ini += strlen($start);
             $len = strpos($string, $end, $ini) - $ini;
             return substr($string, $ini, $len);
     }
    
     /*
         VALUES ( -- cols -- );
         note: mantain space eg <-space-> VALUES <-space->(
     */
     function joinInsertQueriesFromArray($insertArray,$counts_per_group = 200){
         //$insertArray
    
         if(sizeof($insertArray) == 0) return [];
    
         //create a header from first query
         $query = $insertArray[0];
         $query = str_replace("values(", "VALUES (", $query);
         $query = str_replace("values (", "VALUES (", $query);
         $separator = strtoupper(" values (");
         $splitedQuery = explode($separator, $query);
         if(sizeof($splitedQuery) == 0) return [];
         $SQL_HEADER = $splitedQuery[0];
         //echo "HEADER - ".$SQL_HEADER."\n\n";
    
         //
         $insertSQLValuesArray = [];
         $groupSize = $counts_per_group;
         $currentInsertSQLValues = "";
         $createdAwbsListArray = [];
    
         for($i = 0;$i < sizeof($insertArray);$i++){
             $v = $insertArray[$i];
             $v = str_replace("values(", "VALUES (", $v);
             $v = str_replace("values (", "VALUES (", $v);
    
             $value = get_string_between($v,"VALUES (",");");
    
             $currentInsertSQLValues .= "(".$value.")";
    
             if(($i+1) % $groupSize == 0){
                 array_push($insertSQLValuesArray, $currentInsertSQLValues.";");
                 $currentInsertSQLValues = "";
             }else{
                 $currentInsertSQLValues .= ",";
             }
    
         }
         if($currentInsertSQLValues != "") array_push($insertSQLValuesArray, rtrim($currentInsertSQLValues,",") .";");//values < group size:last values
    
         $statements = [];
         //combile INSERT INTO with values header + values
         for($i = 0;$i < sizeof($insertSQLValuesArray);$i++){
             $statement = $SQL_HEADER.' VALUES '.$insertSQLValuesArray[$i];
             array_push($statements, $statement);
         }
    
         //echo json_encode($statements);
         return $statements;
    
     }
    

用法


$list = [
            "INSERT into users(username,id) values ('GRAND',1);",
            "INSERT into users(username,id) values ('MASTER',2);",
            "INSERT into users(username,id) values ('DEOGRATIAS',3);",
            "INSERT into users(username,id) values ('DAMAS',4);",
            "INSERT into users(username,id) values ('NGEREZA',5);"
        ];
            $list = joinInsertQueriesFromArray($list,3);
            //echo json_encode($list);
相关问题