批量生成SQL语句(处理大量数据)

在做项目时,经常会遇到这样的需求:用户给我们发过来一些数据,要求我们把这些数据导入到数据库中,对于少量的数据来说,用最原始的方法就可以解决,直接在SQL里面用语句来实现,但是如果是成千上万条数据,那么就考虑简洁方法实现。

1、将Excel的数据整理好,通过SQL的导入功能直接导入到数据库中,但是要保证数据库的字段和Excel的字段一致。
2、通过Excel生成相应的SQL语句,复制相关的SQL语句执行。例:

格式:="INSERT INTO 表名 (字段1,字段2,字段3, , ) VALUES('"&A1&"','"&B1&"','"&C1&"');"

="INSERT INTO lb_contract_info (CONTRACT_NO,CUSTOMER_NAME,START_DAY,OVER_DAY) VALUES('"&A1&"','"&B1&"','"&C1&"','"&D1&"');"

MySQL使用查询拼接实现批量处理语句:

SELECT CONCAT('insert into `lc_rent_income` (',
  '`ID`,',
  '`PROJECT_ID`,',
  '`PROJECT_PLAN_NUMBER`,',
  '`CONTRACT_ID`,',
  ')', 
'values',
  '(',
    'replace(uuid(),\'-\',\'\'),',
    '\'',PLAN.PROJECT_ID,'\',',
   '\'', PLAN.PROJECT_PLAN_NUMBER,'\',',
    '\'',PLAN.CONTRACT_ID,'\',',
  ') ;') 
FROM LC_CONTRACT_RENT_PLAN PLAN 
LEFT JOIN LB_CONTRACT_INFO ci 
 ON CI.ID = PLAN.CONTRACT_ID
WHERE ci.contract_number IN ('FB0010') 
AND DATE_FORMAT(PLAN.PLAN_DATE,'%Y/%m/%d') <= DATE_FORMAT('2019/04/03','%Y/%m/%d');

Oracle使用查询拼接实现批量处理语句:

SELECT 'upadte lb_contract_info set project_id=''' || lpi.id || ''' where 1=1; ' FROM lb_project_info lpi;

转载请注明出处:BestEternity亲笔。

猜你喜欢

转载自blog.csdn.net/BestEternity/article/details/89001701