select insert

目录

(?<=`) .* 通过正则替换表结构中的无用数据只留下字段名

insert select

INSERT INTO assets (
`ip`,
`region`,
`key`,
`mac`,
`mac_factory`,
`os`,
`os_type`,
`os_version`,
`device`,
`sub_device`,
`factory`,
`os_cpe_info`,
`ip_form`,
`source`,
`ipint`,
`first_time`,
`created_at`,
`updated_at`,
`ip_type`,
`ip_status`,
`desc`,
`important_assets`,
`jt_status`,
`device_owner`,
`device_owner_mail` 
) SELECT
`ip`,
`region`,
`key`,
`mac`,
`mac_factory`,
`os`,
`os_type`,
`os_version`,
`device`,
`sub_device`,
`factory`,
`os_cpe_info`,
`ip_form`,
`source`,
`ipint`,
'2020-04-01 00:00:00',
'2020-04-01 00:00:00',
'2020-04-01 00:00:00',
`ip_type`,
`ip_status`,
`desc`,
`important_assets`,
`jt_status`,
`device_owner`,
`device_owner_mail` 
FROM
    assets;
Artisan::command('inspire', function () {

    $ips = [
        '172.24.193.127',
        '172.24.193.126',
        '172.24.193.125',
        '172.24.193.35',
        '172.24.193.33',
        '172.24.193.49',
        '172.24.193.23',
        '172.24.193.84',
        '172.24.236.179',
        '172.24.236.162',
    ];

    $sql = '';

    foreach ($ips as $ip) {

        $ipint  = ip2long($ip);
        $region = 'default';
        $key    = "{$ip}-{$region}";

        $replace = '';
        $replace .= "'{$ip}'," . PHP_EOL;
        $replace .= "'{$ipint}'," . PHP_EOL;
        $replace .= "'{$region}'," . PHP_EOL;
        $replace .= "'{$key}'," . PHP_EOL;

        $sql .=<<<EOF
INSERT INTO `asset_jt_share` (
  `ip`,
  `ipint`,
  `region`,
  `key`,
  `path`,
  `cur_conn`,
  `name`,
  `max_conn`,
  `created_at`,
  `updated_at`,
  `data_pool_source`,
  `data_pool_created_at`
) SELECT

{$replace}
  `path`,
  `cur_conn`,
  `name`,
  `max_conn`,
  '2020-06-24 00:00:00',
  '2020-06-24 00:00:00',
  `data_pool_source`,
  `data_pool_created_at`

  FROM
    asset_jt_share limit 10;
EOF;

        $sql .= PHP_EOL;
        $sql .= PHP_EOL;
        $sql .= PHP_EOL;
    }

    file_put_contents('tmpsql', $sql);

})->describe('Display an inspiring quote');

以一个表的结果作为另一个表的字段
select count(*) as applies_num, (select count(*) from assets) as assets_num from asset_applies