07/03/2007, 07:27
|
| | Fecha de Ingreso: septiembre-2006
Mensajes: 54
Antigüedad: 18 años, 1 mes Puntos: 0 | |
Insertar Varios Registros(pero Desde Un Archivo) Hola a todos, he probado el código expuesto por Tammander, pero no consigo que funcione.
Código:
Aqui CONEXIÓN con la BD.
Esto no me preocupa ya que he comprobado que funciona
A continuación muestro como he adaptado el código:
Código:
set RS=Server.CreateObject("ADODB.Recordset")
Set ofiles = Server.CreateObject("Scripting.FileSystemObject")
set ofile = ofiles.getFile(Server.MapPath("mi-archivo.csv"))
Set ts = ofile.OpenAsTextStream(1, -2)*Nota
*Nota: Cita: 'Aqui, en ts=... he cambiado lo que tu pusiste, ya que he leido lo siguiente:
Método OpenAsTextStream
Abre un archivo especificado y devuelve un objeto TextStream que se puede utilizar para leer, escribir o agregar en el archivo.
objeto.OpenAsTextStream([modoES, [formato]])
Valores
El argumento modoES puede tener cualquiera de los siguientes valores:
Constante Valor Descripción
ForReading 1 Abrir un archivo sólo para lectura. No puede escribir en este archivo.
ForWriting 2 Abrir un archivo para escritura. Si existe un archivo con el mismo nombre, se sobreescribe su contenido anterior.
ForAppending 8 Abrir un archivo y escribir al final del archivo.
El argumento format puede tener alguno de los siguientes valores:
Constante Valor Descripción
TristateUseDefault -2 Abre el archivo utilizando el valor predeterminado del sistema.
TristateTrue -1 Abre el archivo como Unicode.
TristateFalse 0 Abre el archivo como ASCII. Continuamos despues del inciso
Código:
on error resume next
Do while not ts.AtEndOfStream
Conn.BeginTrans
arrFields = split(ts.ReadLine,";")
if isArray(arrFields) then
sql = "INSERT INTO MI-TABLA (ID_R,NOMBRE-RESTARANTE, SITUACION, CLASE, CANTIDAD, IMAGEN, IMAGEN2, IMAGEN3, PAGAN, PAGEXTRA, MICROSITE) VALUES ('" & arrFields(0) & "','" & arrFields(1) & "','" & arrFields(2) & "','" & arrFields(3) & "','" & arrFields(4) & "','" & arrFields(5) & "','" & arrFields(6) & "','" & arrFields(7) & "','" & arrFields(8) & "','" & arrFields(9) & "','" & arrFields(10) & "')"
con.execute(sql)
if Conn.errors.count <> 0 then
Conn.rollback
exit do
end if
' No se cual es la funcion equivalente en Oracle
'yo creo que está aquí el problema, pero no sé como se puede recoger el ID 'del primer INSERT para usarlo en el segundo
set RS = Conn.execute("SELECT LASTINSERTID() AS Y")
if not RS.EOF then
sql2 = "INSERT INTO DESC_RES (ID_R,IDIOMA,DESCRIPCION) VALUES (" & rs("Y") & ",'" & arrFields(11) & "','" & arrFields(12) & "')"
Conn.execute(sql2)
end if
set RS = nothing
if Conn.errors.count <> 0 then
Conn.rollback
exit do
end if
end if
Conn.commitTrans
loop
err.clear()
on error goto 0
ts.close
set ofile = nothing
set ofiles = nothing
'set Rs = nothing
'set Conn = nothing
response.write("query restaurante: "&sql)
response.write("<BR>Query Descripció: "&sql2)
'rs.close()
'Conn.close()
%>
Aquí muestro el Archivo del que leo los datos:
' Cita: 402667','Mi Restaurante j', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante f<br><b>Dirección:</b> Dirección de Mi Restaurante f';
'402668','Mi Restaurante k', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante g<br><b>Dirección:</b> Dirección de Mi Restaurante g';
'402669','Mi Restaurante l', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante h<br><b>Dirección:</b> Dirección de Mi Restaurante h';
'402670','Mi Restaurante m', '122', '94', '7', 'abrasas.gif', 'abrasas.gif','abrasas.gif', '', '', '','1','<b>Nombre:</b> Mi Resturante i<br><b>Dirección:</b> Dirección de Mi Restaurante i'; Por favor, si alguien sabe decirme los fallos de este código, se lo agradecería
Un saludo |