27 votos

¿Cómo puedo ejecutar varias Instrucciones SQL en Access' Editor de Consultas?

Tengo un archivo de texto con un par de instrucciones SQL en lo que quiero correr en una base de datos de Access. Pensé que debería ser posible con Acceso' El Editor De Consultas. Así, voy en este editor y pegar las instrucciones:

insert into aFewYears (yr) values ('2000')
insert into aFewYears (yr) values ('2001')
insert into aFewYears (yr) values ('2002')
insert into aFewYears (yr) values ('2003')

Tratando de ejecutar (por golpear el signo de exclamación rojo) recibo una
Missing semicolon (;) at end of SQL statement.

Esto podría ser tomado como una indicación de que el editor te permite ejecutar varias instrucciones. Así, puedo cambiar las declaraciones y anexar un punto y coma al final:

insert into aFewYears (yr) values ('2000');
insert into aFewYears (yr) values ('2001');
insert into aFewYears (yr) values ('2002');
insert into aFewYears (yr) values ('2003');

Tengo un
Characters found after end of SQL statement.
lo que probablemente podría ser tomado como una indicación de que no es posible para ejecutar varias instrucciones.

Ok, así que la pregunta: ¿es posible ejecutar varias instrucciones en la el editor de consultas, o es posible de algún modo por lotes-ejecutar sentencias sql en un archivo en/sobre/contra el Acceso.

Gracias / Rene

edición de Las instrucciones insert se utiliza como un ejemplo y me doy cuenta de que son menos que perfecto, porque todos van a la misma mesa y tal cosa, obviamente, puede de alguna manera ser resuelto mediante el uso de una instrucción que tiene un sindicato o algo. En mi caso que estoy tratando de resolver, el archivo contiene no sólo las declaraciones de inserción, sino también de crear la tabla de declaraciones y declaraciones de inserción con diferentes tablas subyacentes. Así que yo esperaba (y todavía la esperanza) de que hay algo así como mi amado SQL*Plus de Oracle que puede ejecutar un archivo con todos los tipos de Sentencias SQL.

22voto

BuildTheRobots Puntos 694

Puedes escribir un poco de código que va a leer en un archivo. Usted puede asumir una sentencia sql por línea, o asumir el ;

Así que, asumiendo que usted tiene un archivo de texto, tales como:

insert into tblTest (t1) values ('2000');

update tbltest set t1 = '2222'
       where id = 5;


insert into tblTest (t1,t2,t3) 
       values ('2001','2002','2003');

Nota la en el archivo de texto anterior nos libre de tener las instrucciones sql en más de una línea.

el código se puede usar para leer + ejecute la secuencia de comandos es:

Sub SqlScripts()

   Dim vSql       As Variant
   Dim vSqls      As Variant
   Dim strSql     As String
   Dim intF       As Integer

   intF = FreeFile()
   Open "c:\sql.txt" For Input As #intF
   strSql = input(LOF(intF), #intF)
   Close intF
   vSql = Split(strSql, ";")

   On Error Resume Next
   For Each vSqls In vSql
      CurrentDb.Execute vSqls
   Next

End Sub

Se podría ampliar la colocación de algún mensaje de error si la declaración no funcionan, tales como

if err.number <> 0 then
   debug.print "sql err" & err.Descripiton & "-->" vSqls
end dif

Independientemente, el de arriba split() y la cadena de leer hace alow sql para estar en más de una línea de...

9voto

phoebus Puntos 7358

Por desgracia, AFAIK no se puede ejecutar varias instrucciones SQL en virtud de una consulta con nombre en el Acceso en el sentido tradicional.

Usted puede hacer varias consultas, luego únelos con VBA (DoCmd.OpenQuery si no recuerdo mal).

También puedes cadena de un montón de cosas, junto con la UNIÓN, si lo desea.

0voto

Matthew Lock Puntos 3945

Usted puede encontrar que es mejor usar un programa de 3er partido para entrar en las consultas en Access, tales como WinSQL creo que a partir de la memoria WinSQL soporta múltiples consultas a través de su lote característica.

En última instancia, que pareció más fácil escribir un programa en perl para hacer INSERCIONES masivas en un Acceso a través de ODBC. Usted podría utilizar vbscript o cualquier lenguaje que soporte ODBC, aunque.

A continuación, puede hacer cualquier cosa que te gusta y tener su propia complicado lógica para controlar la importación.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X