Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Into outfile dinamico

Estas en el tema de Into outfile dinamico en el foro de Mysql en Foros del Web. Buenos días masters!! traigo acá un nuevo tema el cual me esta acomplejando en mi trabajo, resulta que genere un procedimiento, el cual genera una ...
  #1 (permalink)  
Antiguo 16/01/2015, 07:40
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 9 años, 5 meses
Puntos: 1
Busqueda Into outfile dinamico

Buenos días masters!! traigo acá un nuevo tema el cual me esta acomplejando en mi trabajo, resulta que genere un procedimiento, el cual genera una salida en un archivo RAW con especificaciones de espacios entre cada datos, pero bueno mi problema, es que al realizar el OUTFILE siempre tengo que estar cambiando manualmente el nombre de salida del archivo, investige sobre el SQL dinamico, pero creo que para mi SP es poco probable que funcione, alguno conoce otra forma efectiva de crear un INTO OUTFILE dinamico???.

Dejo a continuación el procedimiento generado. Saludos... Quedo pendiente a sus respuestas...

Código MySQL:
Ver original
  1. DROP PROCEDURE IF EXISTS db_dtv.GENERA_CAMP_RX;
  2. CREATE PROCEDURE db_dtv.`GENERA_CAMP_RX`()
  3.  
  4. /*
  5.   Seccion donde se realiza la declaraci?n de las variables a utilizar en el proceso del informe.
  6. */
  7. DECLARE fecha_inigest_anti varchar(20);
  8. DECLARE proxy varchar(20);
  9. DECLARE fecha_dx varchar(20);
  10. DECLARE inigest_reco varchar(20);
  11. DECLARE fingest_reco varchar(20);
  12. DECLARE pais varchar(5);
  13. DECLARE valormax int;
  14. DECLARE valormin int;
  15. DECLARE cont int;
  16.  
  17. SET fecha_inigest_anti = '12/12/2014';
  18. SET ip = 22;
  19. SET proxy ='proxy33';
  20. SET fecha_dx ='08/01/2015';
  21. SET inigest_reco = '15/01/2015';
  22. SET fingest_reco = '22/01/2015';
  23. SET pais = 'COL';
  24. SET c = 1;
  25. SET valormax = (SELECT MAX(length(NOMBRE))FROM tbl_camp_antidesc);
  26. SET cont = (SELECT COUNT(*) FROM tbl_camp_antidesc);
  27.  
  28.  
  29. SELECT IF(LENGTH(a.suscriptor)<8,CONCAT(a.suscriptor,"  "),a.suscriptor),
  30. concat_WS('',a.nombre,CONCAT_WS('\n',space((valormax-length(a.NOMBRE))+7))),
  31. CONCAT(' ',CONCAT_WS(SPACE(5),LTRIM(CONCAT(CONCAT(inigest_reco),'',(fingest_reco),space(10),CONCAT('CH_COBCHI_IP',a.ip,'_DESC_',SUBSTRING(proxy,6,2),'     '))))),
  32. CONCAT(CONCAT(' ','',a.ip),SPACE(26)),
  33. CONCAT(CONCAT(' ','RECONEXION'),SPACE(17)),
  34. CASE a.FONO_1 WHEN '' THEN CONCAT(' ','          ') ELSE CONCAT(' ',CONCAT('0',a.FONO_1)) end condicion,
  35. CASE a.FONO_2 WHEN '' THEN CONCAT('    ','          ') ELSE CONCAT('    ',CONCAT('0',a.FONO_2)) end condicion2,
  36. CASE a.FONO_3 WHEN '' THEN CONCAT('   ','          ') ELSE CONCAT('   ',CONCAT('0',a.FONO_3)) end condicion3,
  37. CASE a.FONO_4 WHEN '' THEN CONCAT('    ','          ') ELSE CONCAT('    ',CONCAT('0',a.FONO_4)) end condicion4,
  38. CONCAT(SPACE(75),a.proxy_des),
  39. IF(LENGTH(b.moroso)=4,CONCAT(' ',b.moroso,SPACE(2)),CONCAT(' ',b.moroso)),
  40. CONCAT('     ',CONCAT(date_format(a.vcmto,'%m/%d/%Y'),'',IF(a.mop='PATPAC','PATPAC  ',a.mop))),
  41. CONCAT(SPACE(51),fingest_reco,MONTH(curdate())),
  42. CONCAT(SPACE(7),fingest_reco,(CASE WHEN d.scorecard_points < 111 THEN 'A' ELSE
  43.                               CASE WHEN d.scorecard_points > 111 THEN 'B' else
  44.                               CASE WHEN d.scorecard_points > 130 THEN 'C' else
  45.                               'A'
  46.                               END
  47.                               END
  48.                               END),space(554))
  49. FROM tbl_camp_antidesc a
  50. INNER JOIN arrears_paso b ON a.suscriptor = b.nro_suscriptor
  51. INNER JOIN desc_hist c ON c.customer_id = a.suscriptor
  52. INNER JOIN score_rx_mes d on a.suscriptor = d.customer_id
  53. WHERE a.INI_GES = date_format(STR_TO_DATE(fecha_inigest_anti, '%d/%m/%Y'),'%Y/%m/%d')
  54. AND a.proxy_des = proxy
  55. AND a.ip = ip
  56. -- AND a.pais = 'COL'
  57. AND c.fecha_desconeccion = date_format(STR_TO_DATE(fecha_dx, '%d/%m/%Y'),'%Y/%m/%d')
  58. AND b.estado_producto = 'D'
  59. ORDER BY a.suscriptor
  60. INTO OUTFILE 'C:/CH_COBCHI_IP22_DESC_33.raw' CHARACTER SET utf8;
  61.  
  62. INSERT INTO tbl_desconectados(customer_id,NOMBRE_CAMPANA,NOMBRE,FONO_1,FONO_2,FONO_3,FONO_4,MOP,MOROSO,PRIORIDAD,FECHA_GENERACION,IP,PROXY,fecha_fin_gest,pais,ID_DESC)
  63. SELECT a.suscriptor,
  64. CONCAT('CHI_COB_',a.ip,'_RECO_',DAY(STR_TO_DATE(fingest_reco, '%d/%m/%Y')),'_',SUBSTRING(fingest_reco,4,2)),
  65. a.nombre,
  66. a.FONO_1,
  67. a.FONO_2,
  68. a.FONO_3,
  69. a.FONO_4,
  70. a.mop,
  71. a.moroso,
  72. (case when d.scorecard_points < 111 then 'A' else
  73. case when d.scorecard_points > 111 then 'B' else
  74. case when d.scorecard_points > 130 then 'C' else
  75. 'A'
  76.  end
  77.  end
  78.  end),
  79. date_format(STR_TO_DATE(inigest_reco, '%d/%m/%Y'),'%Y/%m/%d'),
  80. a.ip,
  81. SUBSTRING(a.proxy_des,6,2),
  82. date_format(STR_TO_DATE(fingest_reco, '%d/%m/%Y'),'%Y/%m/%d'),
  83. pais,
  84. CONCAT(a.suscriptor,inigest_reco)
  85. FROM tbl_camp_antidesc a
  86. INNER JOIN arrears_paso b ON a.suscriptor = b.nro_suscriptor
  87. INNER JOIN desc_hist c ON c.customer_id = a.suscriptor
  88. INNER JOIN score_rx_mes d on a.suscriptor = d.customer_id
  89. WHERE a.INI_GES = date_format(STR_TO_DATE(fecha_inigest_anti, '%d/%m/%Y'),'%Y/%m/%d')
  90. AND a.proxy_des = proxy
  91. AND a.ip = ip
  92. AND c.fecha_desconeccion = date_format(STR_TO_DATE(fecha_dx, '%d/%m/%Y'),'%Y/%m/%d')
  93. AND b.estado_producto = 'D'
  94. ORDER BY a.suscriptor;
  95.  
__________________
David Carrera González
Santiago de Chile
Analista de base de datos

Última edición por David_Carrera_G; 16/01/2015 a las 07:42 Razón: Mejorar orden

Etiquetas: dinamico, procedimiento, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:29.