Cual es la diferencia entre.
"INSERT INTO clientes SET "
y
"INSERT INTO clientes ( field1. field2. field3) VALUES "
hablando concretamente de MySql y DOLPHIN
saludos..
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Cual es la diferencia entre.
"INSERT INTO clientes SET "
y
"INSERT INTO clientes ( field1. field2. field3) VALUES "
hablando concretamente de MySql y DOLPHIN
saludos..
Por lo que tengo entendido son dos forma de hacer un insert con resultados idénticos.
Saludos
gracias,
algún otro comentario ?
saludos.
Hola,,,
Sintaxis pata INSERT
INSERT INTO productos (campo1, campo2, campo3) VALUES (var1, car2, var3) WHERE <condición>
Para UPDATE
UPDATE productos SET campo1 = var1, campo2 = var2, campo3 = var3 WHERE <condición>
INSERT inserta nuevas filas en una tabla existente. Los formatos INSERT ... VALUES e INSERT ... SET, insertas filas basándose en los valores especificados explícitamente. El formato The INSERT ... SELECT inserta filas seleccionadas de otra tabla o tablas. El formato INSERT ... VALUES con una lista de múltiples valores está soportada por MySQL desde la versión 3.22.5. La sintaxis INSERT ... SET está soportada por MySQL desde la versión 3.22.10...saludos...
cCmdSql := "INSERT INTO " +;
"Fijos " +;
"SET " +;
"Fij_Cia = '" + STR(oRsEmp:Fields("EMP_CIA"):Value,02,0) + "'," +;
"Fij_Emp = '" + STR(oRsEmp:Fields("EMP_EMP"):Value,05,0) + "'," +;
"Fij_Con = '" + STR(nCpto,03,0) + "'," +;
"Fij_Vec = '" + STR(nUnidad,05,2) + "'," +;
"Fij_Cal = 1" + "," +;
"Fij_Sdi = '" + STR(nSdi,11,2) +"'," +;
"Fij_Sdv = '" + STR(nSdv,11,2) +"'"#include "fivewin.ch"
#include <tdolphin.ch>
#DEFINE C_SIMPLE CHR( 39 )
#DEFINE c_simple CHR( 39 )
Function Test()
local aNombres
local i
local cInsertQry := ""
local cQry
aadd( aNombres, {"001", "NOMBRE 1"} )
aadd( aNombres, {"002", "NOMBRE 2"} )
aadd( aNombres, {"003", "NOMBRE 3"} )
aadd( aNombres, {"004", "NOMBRE 4"} )
aadd( aNombres, {"005", "NOMBRE 5"} )
aadd( aNombres, {"006", "NOMBRE 6"} )
aadd( aNombres, {"007", "NOMBRE 7"} )
aadd( aNombres, {"008", "NOMBRE 8"} )
aadd( aNombres, {"009", "NOMBRE 9"} )
aadd( aNombres, {"010", "NOMBRE 10"} )
// PRIMERO TOMAR LOS VALORES
// PARA QUE SEA MAS RAPIDO EL CICLO FOR
// estamos hablando de que los arreglos pueden contener desde 100 o hasta 20 mil registros
for i := 1 to len( aNombres )
cQry := "INSERT INTO clientes SET "
cQry += "clave=" + ClipValue2SQL( aNombres[i][1] ) + ","
cQry += "nombre=" + ClipValue2SQL( aNombres[i][2] )
cInsertQry += cQry + ";"
NEXT
//AQUI QUIERO AGREGAR LOS REGISTROS AL FINAL DE
//DE RECORRER EL CICLO
// pero NO FUNCIONA !!! mysql con dolphin
// no marca error ni nada simplemente no inserta los
// registros.
TRY
oCon:Execute( cInsertQry )
CATCH
END
// ACLARO TENGO MYSQL. 5.0
// GRACIAS.. SALUDOS..
return nilsysctrl2 wrote:Jose Luis,
GRACIAS, MUY CLARO,
Paisa, gracias,
se me presenta el sig. caso.
#include "fivewin.ch" #include <tdolphin.ch> #DEFINE C_SIMPLE CHR( 39 ) #DEFINE c_simple CHR( 39 ) Function Test() local aNombres local i local cInsertQry := "" local cQry aadd( aNombres, {"001", "NOMBRE 1"} ) aadd( aNombres, {"002", "NOMBRE 2"} ) aadd( aNombres, {"003", "NOMBRE 3"} ) aadd( aNombres, {"004", "NOMBRE 4"} ) aadd( aNombres, {"005", "NOMBRE 5"} ) aadd( aNombres, {"006", "NOMBRE 6"} ) aadd( aNombres, {"007", "NOMBRE 7"} ) aadd( aNombres, {"008", "NOMBRE 8"} ) aadd( aNombres, {"009", "NOMBRE 9"} ) aadd( aNombres, {"010", "NOMBRE 10"} ) // PRIMERO TOMAR LOS VALORES // PARA QUE SEA MAS RAPIDO EL CICLO FOR // estamos hablando de que los arreglos pueden contener desde 100 o hasta 20 mil registros for i := 1 to len( aNombres ) cQry := "INSERT INTO clientes SET " cQry += "clave=" + ClipValue2SQL( aNombres[i][1] ) + "," cQry += "nombre=" + ClipValue2SQL( aNombres[i][2] ) cInsertQry += cQry + ";" NEXT //AQUI QUIERO AGREGAR LOS REGISTROS AL FINAL DE //DE RECORRER EL CICLO // pero NO FUNCIONA !!! mysql con dolphin // no marca error ni nada simplemente no inserta los // registros. TRY oCon:Execute( cInsertQry ) CATCH END // ACLARO TENGO MYSQL. 5.0 // GRACIAS.. SALUDOS.. return nil
Jose Luis,
de echo lo tengo asi, los registros los agrego dentro del FOR NEXT de uno por uno,
pero cuando son muchos elementos en el array, se hace lenta la inserción de registros
yo quiero ver si primero recorro el for next , poniendo las variables en un STRING
y al final agregarlos a la tabla,
se podrá hacer eso ?
gracias.
saludos..
Lo que seria es hacer un query como cuando se hacen respaldo de tablas y restauracion, aunque creo que al final seria casi igual, si vas hacer 2 procesos, yo te recomendaria que hicieras el insert y el execute dentro del for next, asi aseguraria la carga de los registros, igual va a tardar y cargar un array con tantos registros, te podria causar inconsistencia en los datos, has ambos metodos y calculalos con un timer haber cual te lleva menos tiempo...yo insisto en INSERT / EXECUTE dentro de FOR NEXT y podiras hasta colocar un oMeter...saludos... ![]()
Los registros los tomo de un archivo de texto plano,
es muy rápido el while ! oTxt:Eof()
actualmente lo hago como dices
pero pensé si habría otra forma de hacerlo mas rápido,
quizás un PROCEDURE que corra dentro del mismo server,
saludos.
cQry := "INSERT INTO clientes SET "
for i := 1 to len( aNombres )
cQry += "clave=" + ClipValue2SQL( aNombres[i][1] ) + ","
cQry += "nombre=" + ClipValue2SQL( aNombres[i][2] )
cInsertQry += cQry + ";"
NEXT
TRY
oCon:Execute( cInsertQry )
CATCH
END for i := 1 to len( aNombres )
cQry := "INSERT INTO clientes SET "
cQry += "clave=" + ClipValue2SQL( aNombres[i][1] ) + ","
cQry += "nombre=" + ClipValue2SQL( aNombres[i][2] )
cInsertQry += cQry + ";" + chr(13)+chr(10)
NEXTINSERT INTO Clientes SET clave="001",nombre="NOMBRE 1";INSERT INTO clientes SET clave="02",nombre="NOMBRE 2"; for i := 1 to len( aNombres )
cQry := "INSERT INTO clientes SET " + chr(13)+chr(10)
cQry += "clave=" + ClipValue2SQL( aNombres[i][1] ) + "," + chr(13)+chr(10)
cQry += "nombre=" + ClipValue2SQL( aNombres[i][2] ) + ";" + chr(13)+chr(10)
cInsertQry += cQry + chr(13)+chr(10)
NEXTINSERT INTO Clientes SET
clave="001",
nombre="NOMBRE 1";
INSERT INTO clientes SET
clave="02",
nombre="NOMBRE 2";INSERT INTO clientes (Clave, Nombre) Values ('01', 'NOMBRE 1');INSERT INTO clientes Values ('01', 'NOMBRE 1');INSERT INTO clientes (Clave, Nombre)
Select ... From "Otra tabla"
Where ...; #include "fivewin.ch"
#include <tdolphin.ch>
#DEFINE C_SIMPLE CHR( 39 )
#DEFINE c_simple CHR( 39 )
Function Test()
local aNombres
local i
local cInsertQry := ""
local cQry
aadd( aNombres, {"001", "NOMBRE 1"} )
aadd( aNombres, {"002", "NOMBRE 2"} )
aadd( aNombres, {"003", "NOMBRE 3"} )
aadd( aNombres, {"004", "NOMBRE 4"} )
aadd( aNombres, {"005", "NOMBRE 5"} )
aadd( aNombres, {"006", "NOMBRE 6"} )
aadd( aNombres, {"007", "NOMBRE 7"} )
aadd( aNombres, {"008", "NOMBRE 8"} )
aadd( aNombres, {"009", "NOMBRE 9"} )
aadd( aNombres, {"010", "NOMBRE 10"} )
// PRIMERO TOMAR LOS VALORES
// PARA QUE SEA MAS RAPIDO EL CICLO FOR
// estamos hablando de que los arreglos pueden contener desde 100 o hasta 20 mil registros
cQry := "INSERT INTO clientes (clave,nombre) VALUES "
for i := 1 to len( aNombres )
cQry += "( " + ClipValue2SQL( aNombres[i][1] ) + "," + ClipValue2SQL( aNombres[i][2] ) + ")"
IF i < Len( aNombres )
cQry+= ','
NEXT
//AQUI QUIERO AGREGAR LOS REGISTROS AL FINAL DE
//DE RECORRER EL CICLO
// pero NO FUNCIONA !!! mysql con dolphin
// no marca error ni nada simplemente no inserta los
// registros.
TRY
oCon:Execute( cQry )
CATCH
END
// ACLARO TENGO MYSQL. 5.0
// GRACIAS.. SALUDOS..
return nil