在laravel中,如何将A数据库的表A复制到B数据库的表B
先上代码
do {
try {
$result = $this->loadGskydjxx($this->task['dsid'], $page, $pageSize);
} catch (\Exception $e) {
// 结束导入
$this->info(sprintf('sync %s finished. totalRows:%d', $this->task['src'], $totalRows));
$this->statusSave($table, $totalRows, true);
exit;
}
$pageData = json_decode($result['PAGE_DATA'], true);
$data = json_decode($result['DATA'], true);
$pageCount = $pageData['PAGE_COUNT'];
$start = ($page - 1) * $pageSize + 1;
$this->info(sprintf('sync %s insert %d -> %d', $this->task['src'], $start, $start + $pageSize));
$table->notice = sprintf('开始导入第%s条到%s条', $start, $start + $pageSize);
$table->save();
foreach ($data as $row) {
DB::insert(sprintf("insert into %s (`activecapcointype`, `activecapexrate`, `activecapital`, `address`, `addressproperty`, `addressregionalism`, `adminpersonnum`, `adregistertype`, `aicid`, `aicstationid`, `annualdeptid`, `approvaldocumentno`, `approvedate`, `approvedon`, `backupdate`, `bankaccount`, `bankname`, `begindate`, `bizscopeparentid`, `bizsequence`, `businessmode`, `businessscope`, `certificatename`, `changefromgthregno`, `chargedep`, `checkgrade`, `checkhistoryinfoid`, `checkyear`, `coinid`, `comments`, `copydate`, `copynum`, `corpkeywords`, `corpname`, `corporgcode`, `corpregdep`, `coworkerandapprentice`, `deptopinion`, `deputyname`, `deputyphone`, `dominationcode`, `durationstay`, `economicproperty`, `email`, `employeenum`, `enddate`, `enterprisestatusid`, `entityidcode`, `entityno`, `entitytypeid`, `exchangerate`, `executantnum`, `expeditecorpname`, `expeditecorpregcode`, `expeditecorpregterra`, `familyempolyeenumber`, `familysign`, `faxno`, `feebankaccountid`, `feestardandid`, `feetype`, `fileid`, `fixedcapcointype`, `fixedcapexrate`, `fixedcapital`, `foodstufflabel`, `foreigncertname`, `foreigncertno`, `foreignentitytype`, `foreignindustrial`, `foreignname`, `foundingcopydate`, `foundingdate`, `historyinfoid`, `individualmakeupmodeid`, `industrycode`, `industrytype`, `investamount`, `investcointype`, `investexchangerate`, `investor`, `investtype`, `isassetmerger`, `isbroker`, `ischangeentitytype`, `ischangefromgth`, `ischecklicence`, `isinvestcompany`, `isruralbroker`, `issecrecy`, `isselectlicencevmonth`, `isselectyear`, `isstockmerger`, `issuedeptid`, `istemplicense`, `istemporary`, `isurban`, `keywordsspell`, `lastcheckdate`, `lastpaymentdate`, `launchprivatenum`, `liaisonname`, `liaisontelphone`, `licencevaildenddate`, `licencevaildmonth`, `licencevaildstartdate`, `locus`, `mainfoodstufflabel`, `mainproducts`, `monthterm`, `nameinputstyle`, `namereghistoryinfoid`, `nameseg1`, `nameseg3`, `nameseg4`, `noticeletterno`, `operationarea`, `operbegindate`, `operenddate`, `operyear`, `orgunitid`, `otherbizscopeparentid`, `otherbusinessscope`, `otherpersonnum`, `paiclupcapital`, `paiclupcptlcoin`, `paiclupcptlexrate`, `partnernum`, `perilindustry`, `permissionproject`, `phone`, `placeproperty`, `placeusingtodate`, `postcode`, `principal`, `principalphone`, `ratedmgmtfee`, `rawmaterialfrom`, `recorddate`, `regcapital`, `regcapitalchina`, `regcapitalcoin`, `regcapitaldollor`, `regcapitaloversea`, `regcptlcncoin`, `regcptlcncoinexerate`, `regcptlovsecoin`, `regcptlovsecoinexerate`, `registerno`, `regplace`, `relation`, `runninglocation`, `sealcount`, `secondname`, `shortname`, `simpleentitytype`, `singlebizplaceid`, `singleentitytype`, `specialindustrytype`, `sponsoresby`, `sponsoresphone`, `status`, `statutebackup`, `subentitytype`, `superiorityprodcode`, `supervisedeptid`, `technicpersonnum`, `technitiannum`, `toolandmachine`, `totalinvest`, `totalmonthterm`, `transfernoticeno`, `unemployment`, `unittype`, `upcorplegalrep`, `validstay`, `validstaystart`, `viceprincipal`, `viceprincipalphone`, `workplace`, `workprivatenum`, `uniscid`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
$this->task['dst']), [
$row['ACTIVECAPCOINTYPE'], $row['ACTIVECAPEXRATE'], $row['ACTIVECAPITAL'], $row['ADDRESS'],
$row['ADDRESSPROPERTY'], $row['ADDRESSREGIONALISM'], $row['ADMINPERSONNUM'], $row['ADREGISTERTYPE'],
$row['AICID'], $row['AICSTATIONID'], $row['ANNUALDEPTID'], $row['APPROVALDOCUMENTNO'],
$row['APPROVEDATE'], $row['APPROVEDON'], $row['BACKUPDATE'], $row['BANKACCOUNT'], $row['BANKNAME'],
$row['BEGINDATE'], $row['BIZSCOPEPARENTID'], $row['BIZSEQUENCE'], $row['BUSINESSMODE'],
$row['BUSINESSSCOPE'], $row['CERTIFICATENAME'], $row['CHANGEFROMGTHREGNO'], $row['CHARGEDEP'],
$row['CHECKGRADE'], $row['CHECKHISTORYINFOID'], $row['CHECKYEAR'], $row['COINID'], $row['COMMENTS'],
$row['COPYDATE'], $row['COPYNUM'], $row['CORPKEYWORDS'], $row['CORPNAME'], $row['CORPORGCODE'],
$row['CORPREGDEP'], $row['COWORKERANDAPPRENTICE'], $row['DEPTOPINION'], $row['DEPUTYNAME'],
$row['DEPUTYPHONE'], $row['DOMINATIONCODE'], $row['DURATIONSTAY'], $row['ECONOMICPROPERTY'],
$row['EMAIL'], $row['EMPLOYEENUM'], $row['ENDDATE'], $row['ENTERPRISESTATUSID'],
$row['ENTITYIDCODE'], $row['ENTITYNO'], $row['ENTITYTYPEID'], $row['EXCHANGERATE'],
$row['EXECUTANTNUM'], $row['EXPEDITECORPNAME'], $row['EXPEDITECORPREGCODE'],
$row['EXPEDITECORPREGTERRA'], $row['FAMILYEMPOLYEENUMBER'], $row['FAMILYSIGN'], $row['FAXNO'],
$row['FEEBANKACCOUNTID'], $row['FEESTARDANDID'], $row['FEETYPE'], $row['FILEID'],
$row['FIXEDCAPCOINTYPE'], $row['FIXEDCAPEXRATE'], $row['FIXEDCAPITAL'], $row['FOODSTUFFLABEL'],
$row['FOREIGNCERTNAME'], $row['FOREIGNCERTNO'], $row['FOREIGNENTITYTYPE'],
$row['FOREIGNINDUSTRIAL'], $row['FOREIGNNAME'], $row['FOUNDINGCOPYDATE'], $row['FOUNDINGDATE'],
$row['HISTORYINFOID'], $row['INDIVIDUALMAKEUPMODEID'], $row['INDUSTRYCODE'], $row['INDUSTRYTYPE'],
$row['INVESTAMOUNT'], $row['INVESTCOINTYPE'], $row['INVESTEXCHANGERATE'], $row['INVESTOR'],
$row['INVESTTYPE'], $row['ISASSETMERGER'], $row['ISBROKER'], $row['ISCHANGEENTITYTYPE'],
$row['ISCHANGEFROMGTH'], $row['ISCHECKLICENCE'], $row['ISINVESTCOMPANY'], $row['ISRURALBROKER'],
$row['ISSECRECY'], $row['ISSELECTLICENCEVMONTH'], $row['ISSELECTYEAR'], $row['ISSTOCKMERGER'],
$row['ISSUEDEPTID'], $row['ISTEMPLICENSE'], $row['ISTEMPORARY'], $row['ISURBAN'],
$row['KEYWORDSSPELL'], $row['LASTCHECKDATE'], $row['LASTPAYMENTDATE'], $row['LAUNCHPRIVATENUM'],
$row['LIAISONNAME'], $row['LIAISONTELPHONE'], $row['LICENCEVAILDENDDATE'],
$row['LICENCEVAILDMONTH'], $row['LICENCEVAILDSTARTDATE'], $row['LOCUS'], $row['MAINFOODSTUFFLABEL'],
$row['MAINPRODUCTS'], $row['MONTHTERM'], $row['NAMEINPUTSTYLE'], $row['NAMEREGHISTORYINFOID'],
$row['NAMESEG1'], $row['NAMESEG3'], $row['NAMESEG4'], $row['NOTICELETTERNO'], $row['OPERATIONAREA'],
$row['OPERBEGINDATE'], $row['OPERENDDATE'], $row['OPERYEAR'], $row['ORGUNITID'],
$row['OTHERBIZSCOPEPARENTID'], $row['OTHERBUSINESSSCOPE'], $row['OTHERPERSONNUM'],
$row['PAICLUPCAPITAL'], $row['PAICLUPCPTLCOIN'], $row['PAICLUPCPTLEXRATE'], $row['PARTNERNUM'],
$row['PERILINDUSTRY'], $row['PERMISSIONPROJECT'], $row['PHONE'], $row['PLACEPROPERTY'],
$row['PLACEUSINGTODATE'], $row['POSTCODE'], $row['PRINCIPAL'], $row['PRINCIPALPHONE'],
$row['RATEDMGMTFEE'], $row['RAWMATERIALFROM'], $row['RECORDDATE'], $row['REGCAPITAL'],
$row['REGCAPITALCHINA'], $row['REGCAPITALCOIN'], $row['REGCAPITALDOLLOR'],
$row['REGCAPITALOVERSEA'], $row['REGCPTLCNCOIN'], $row['REGCPTLCNCOINEXERATE'],
$row['REGCPTLOVSECOIN'], $row['REGCPTLOVSECOINEXERATE'], $row['REGISTERNO'], $row['REGPLACE'],
$row['RELATION'], $row['RUNNINGLOCATION'], $row['SEALCOUNT'], $row['SECONDNAME'], $row['SHORTNAME'],
$row['SIMPLEENTITYTYPE'], $row['SINGLEBIZPLACEID'], $row['SINGLEENTITYTYPE'],
$row['SPECIALINDUSTRYTYPE'], $row['SPONSORESBY'], $row['SPONSORESPHONE'], $row['STATUS'],
$row['STATUTEBACKUP'], $row['SUBENTITYTYPE'], $row['SUPERIORITYPRODCODE'], $row['SUPERVISEDEPTID'],
$row['TECHNICPERSONNUM'], $row['TECHNITIANNUM'], $row['TOOLANDMACHINE'], $row['TOTALINVEST'],
$row['TOTALMONTHTERM'], $row['TRANSFERNOTICENO'], $row['UNEMPLOYMENT'], $row['UNITTYPE'],
$row['UPCORPLEGALREP'], $row['VALIDSTAY'], $row['VALIDSTAYSTART'], $row['VICEPRINCIPAL'],
$row['VICEPRINCIPALPHONE'], $row['WORKPLACE'], $row['WORKPRIVATENUM'], $row['UNISCID']
]);
$totalRows++;
}
$page++;
} while ($pageCount >= $page);
// 结束导入
$this->info(sprintf('sync %s finished. totalRows:%d', $this->task['src'], $totalRows));
$this->statusSave($table, $totalRows);
今天一个老哥来找我帮他修改一下代码,真是活久见,看到上面的代码,人都是傻了,整体看了下他的大概功能是:
【将A数据库的表A 复制到B数据库的表B】
这是以前一个哥们写的代码,超级好奇他是怎么把这么多的字段全部抄下来的
他这么做的目的只是为了凑出一条条sql语句出来,然后连接另外一个数据,在不断的循环插入到B数据库中,如果是你,你会怎么办?
说说我的想法吧
方案1
如果是由于各种原因,需要将老的表重新切换到新的表中,新旧表字段可能无法对应起来情况下:
a:将旧表直接修改表结构为新表的结构,新表替换旧表。
方案2
如何旧表依然需要,但是旧表产生的数据需要同步到新表
a:当curd数据的时候,异步创建一个队列自动同步到新表中,这样就可以避免写大量的for循环。
你们有什么好的方案呢?
本作品采用《CC 协议》,转载必须注明作者和本文链接
直接SQL操作
直接导出再导入不就好了?
在A库项目database文件里配置好B库,然后写observer(增删改)