CREATE CURSOR csrTEMPORAL(campo1 C(100), campo2 C(100), cAMPO3 C(100), CAMPO7 C(100)) FOR I = 1 TO 150 INSERT INTO csrTEMPORAL VALUES(CDOW(DATE()+i),CDOW(DATE()+i+1),CDOW(DATE()+2),CDOW(DATE()+3)) ENDFOR cDataSource = "Test" cUserName = "root" cPassword = "root" ConnectionString = [DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=] + ; cDataSource + [;USER=] + cUserName + [;PASSWORD=] + cPassword + [;OPTION=3;] nConexion = SQLSTRINGCONNECT( ConnectionString ) SELECT csrTEMPORAL lcComando = "" SCAN lcComando = lcComando + [("] + ALLTRIM(csrTEMPORAL.CAMPO1) + [","] + ; ALLTRIM(csrTEMPORAL.CAMPO2) + [","] + ALLTRIM(csrTEMPORAL.CAMPO3) + ; [","] + ALLTRIM(csrTEMPORAL.CAMPO7) + ["),] ENDSCAN lcComando = [INSERT INTO TEMPORAL (CAMPO1, CAMPO2, CAMPO3, CAMPO7) VALUES ] + ; SUBSTR(lcComando,1,LEN(lcComando)-1) ? lcComando lnSegundos = SECONDS() x = SQLEXEC(nConexion ,lcComando) MESSAGEBOX(SECONDS()-lnSegundos) x = SQLEXEC(nConexion, "SELECT * FROM TEMPORAL", "csrTemporalSQL") x = SQLDISCONNECT(0)Lic. J. Enrique Ramos Menchaca
Guadalajara, Jalisco, México
hola, he intentado insertar con esta rutina 10800 registros. Al parecer existe un limite de registros en la inserción masiva.
ResponderBorrarCon esta misma rutina, utilice una sub rutina tomando varios bloques de 3000 registros, logrando insertar los 10800 registros. Sera por lo extenso que es la linea. Creo q lo mejor y lo mas seguro seria considerar bloques de 1000
Frank López
Iquitos-Perú
Hola, no es la cantidad de registros, es el largo de la cadena que se forme.
BorrarYo logre insertar 200,000 registros
Esto fue lo que encontré en la web.
"Entre un par de comillas no puede haber mas que 255 carácteres. La misma
restriction que el tamaño maximo de una columna de una tabla en VFP.
El maximo para una variable de una cadena de caractéres es cerca 18,000,000
bytes. Puedes concatenar muchos "xxxxx"+"zzzzz". "
-Anders
cuando uso con campos numéricos no funciona la rutina, si me dieran una manito
ResponderBorrar