1 Star 5 Fork 2

行者 / 接口数据自动入库(JSON2DB)

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
TBL.sql 3.19 KB
一键复制 编辑 原始数据 按行查看 历史
行者 提交于 2018-09-11 21:34 . TBL存储过程
DELIMITER //
CREATE PROCEDURE `TBL`(
IN TBLNAME varchar(16),
IN isDuplicate int,
IN FLDNAME varchar(16))
BEGIN
SET GLOBAL group_concat_max_len=102400;
select
CASE isDuplicate
WHEN 1 THEN FLDNAME
WHEN 0 THEN '0'
END AS isDuplicate,
/*
CASE isDuplicate
WHEN 1 THEN
TRIM(TRAILING concat(',',FLDNAME) FROM TRIM(LEADING concat(FLDNAME,',') FROM replace(tb_flds,concat(',',FLDNAME,','),',')))
WHEN 0 THEN '0'
END AS tb_kv_flds,
CASE isDuplicate
WHEN 1 THEN
TRIM(TRAILING concat(',\'{$',FLDNAME,'}\'') FROM TRIM(LEADING concat('\'{$',FLDNAME,'}\',') FROM replace(tb_values,concat(',\'{$',FLDNAME,'}\','),',')))
WHEN 0 THEN '0'
END as tb_kv_values,
*/
CASE isDuplicate
WHEN 1 THEN insert_kv_str
/* replace( replace( replace( replace( replace( replace(insert_kv_str,concat(',',FLDNAME,','),','),concat(',B.',FLDNAME,','),',') ,concat('(',FLDNAME,','),'(') , concat(',',FLDNAME,')'),')') , concat('B.',FLDNAME,','),''), concat(',B.',FLDNAME),'') */
WHEN 0 THEN '0'
END AS insert_kv_sql
,/*replace(replace(replace(tb_kv_tmp,'(,','('),',)',')'),',,',',') */ tb_kv_tmp as tb_kv_tmptbl,
CASE isDuplicate
WHEN 1 THEN insert_tmp_str
/* replace( replace( replace( replace( replace( replace(insert_str,concat(',\'{$',FLDNAME,'}\','),','),concat(',\'{$',FLDNAME,'}\''),'') ,concat('\'{$',FLDNAME,'}\','),'') , concat('(',FLDNAME,','),'(') , concat(',',FLDNAME,')'),')'), concat(',',FLDNAME,','),',') */
WHEN 0 THEN '0'
END as insert_tmptbl_sql,
tb_flds,tb_types,tb_vars,tb_values,select_str as select_sql,insert_str as insert_sql from
( SELECT tb_flds,tb_types,tb_values,tb_vars
, concat('insert into ',TBLNAME,'(',tb_flds,') select ',tb_tmp_values,' from tmp_',TBLNAME,' B where not exists (select * from ',TBLNAME,' where ',FLDNAME,'=B.',FLDNAME,')') as insert_kv_str
, concat('select ', tb_flds, ' from ', TBLNAME) AS select_str
, concat('insert into ', TBLNAME, '(', tb_flds, ') values(', tb_values, ')') AS insert_str
, concat('insert into tmp_', TBLNAME, '(', tb_flds, ') values(', tb_values, ')') AS insert_tmp_str
, CASE isDuplicate
WHEN 1 THEN
concat('DROP TEMPORARY TABLE IF EXISTS `tmp_',TBLNAME,'`; CREATE TEMPORARY TABLE `tmp_',TBLNAME,'` (',tb_kv_tmp,')')
WHEN 0 THEN '0' END as tb_kv_tmp
FROM (
SELECT GROUP_CONCAT(fld_name) AS tb_flds, GROUP_CONCAT(fld_type) AS tb_types
, GROUP_CONCAT(concat('\'', '{$', fld_name, '}\'')) AS tb_values,
GROUP_CONCAT(concat('$', fld_name)) AS tb_vars,
GROUP_CONCAT(concat('B.',fld_name)) as tb_tmp_values
, GROUP_CONCAT(fld_kv) AS tb_kv_tmp
FROM (
SELECT column_name AS fld_name, column_type AS fld_type,
/*case when column_name=FLDNAME then '' else */
concat(column_name,' ',column_type,' DEFAULT NULL')
/*end */
as fld_kv
FROM information_schema.columns
WHERE (table_schema = 'hms_jsy'
AND table_name = TBLNAME
AND column_key <> 'PRI')
) tmp_tb1
) tmp_tb2
)tmp_tb3;
END //
DELIMITER
PHP
1
https://gitee.com/adetion/json2db.git
git@gitee.com:adetion/json2db.git
adetion
json2db
接口数据自动入库(JSON2DB)
master

搜索帮助