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

insertar datos de un txt a sql server

Estas en el tema de insertar datos de un txt a sql server en el foro de SQL Server en Foros del Web. hola que tal, resulta que tengo que insertar datos desde un archivo .TXT a la base de datos he conseguido que se hace con la ...
  #1 (permalink)  
Antiguo 03/01/2008, 09:35
 
Fecha de Ingreso: enero-2008
Mensajes: 18
Antigüedad: 16 años, 4 meses
Puntos: 0
insertar datos de un txt a sql server

hola que tal, resulta que tengo que insertar datos desde un archivo .TXT a la base de datos he conseguido que se hace con la funcion bulk insert por ejemplo:

BULK INSERT tabla
FROM 'C:\archivo.txt';

hasta ahi todo bien, pero pasa que la ruta debe ser escogida por el usuario, lo cual me indica que debo utilizar variables, he intentado hacerlo declarando una variable y colocarla asi:

BULK INSERT tabla
FROM @variable;

pero de esa forma me da error, si alguien ha hecho esta tarea utilizando variables agradeceria la ayuda, saludos..!!
  #2 (permalink)  
Antiguo 03/01/2008, 10:22
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: insertar datos de un txt a sql server

Que tal Carlos.

Alguna vez tuve este problema, y lo que hice fue enviar esa sentencia desde la aplicación cliente, y ahí si puedes usa la ruta como variable. Ya que tampoco es posible armar una cadena con esa sentencia y después ejecutarla con un EXECUTE, en SQL Server 2005 se puede, pero en SQL Server 2000 no, lo tienes que hacer un un command, como dije anteriormente.

Saludos!
  #3 (permalink)  
Antiguo 03/01/2008, 10:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: insertar datos de un txt a sql server

Claro que se puede hacer mediante QUERY DINAMICO:

DECLARE @SQLString NVARCHAR(100)
SET @SQLString = N'BULK INSERT tabla FROM '+@variable
EXEC sp_executesql @SQLString
  #4 (permalink)  
Antiguo 03/01/2008, 12:11
 
Fecha de Ingreso: enero-2008
Mensajes: 18
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: insertar datos de un txt a sql server

no he usado mucho sql server, lo estoy haciendo con la version 2005 daniel00...
iislas en donde coloco el valor de @variable ?? declaro esa variable y le coloco la cadena con la ruta?
  #5 (permalink)  
Antiguo 03/01/2008, 12:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: insertar datos de un txt a sql server

Carlos

Si, si vas a crear un store, este recibiria el valor de @variable como parametro

CREATE PROCEDURE usp_InsertaTexto
@variable VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100)
SET @SQLString = N'BULK INSERT tabla FROM '+@variable
EXEC sp_executesql @SQLString
END

Claro que deberia validar que la variable no viniera en blanco o con valor NULL
  #6 (permalink)  
Antiguo 04/01/2008, 07:50
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: insertar datos de un txt a sql server

Hola, perdonen que me meta, pero tal vez le sea más util utilizar un "bcp" en lugar de bulk insert. Bcp hace lo mismo y tiene opciones similares a Bulk Insert con la diferencia que puede correr en el pc del cliente, por lo tanto los archivos pueden estar en el pc de cada cliente.

un ejemplo:(corre en simbolo de sistema)
bcp tabla in c:/archivo.txt -T -c

en este caso archivo.txt está en el pc que ejecuta el bcp, no en el servidor sql.

Bueno, lo dejo como una alternativa en caso de que se ajuste a lo que necesita carlos-paredes

saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #7 (permalink)  
Antiguo 04/01/2008, 08:13
 
Fecha de Ingreso: enero-2008
Mensajes: 18
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: insertar datos de un txt a sql server

no hay nada que disculpar, al contrario que opinen todos!!! pero segun este articulo:
http://support.microsoft.com/kb/551066/es dice que BCP es para lo contrario:

El programa Bulk Copy Program BCP.EXE realiza un volcado de datos de
una tabla a un fichero. mi caso es al reves, gracias por la sugerencia, si quieres prueba eso a ver si estoy equivocado...
  #8 (permalink)  
Antiguo 04/01/2008, 08:30
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: insertar datos de un txt a sql server

Hola, BCP sirve para las dos direcciones:

bcp tabla in c:/archivo.txt -T -c => lleva un txt a una tabla en sql
bcp tabla out c:/archivo.txt -T -c => vuelca una tabla sql en un txt

Bulk Insert sólo tiene una dirección

saludos!!
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #9 (permalink)  
Antiguo 04/01/2008, 14:15
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: insertar datos de un txt a sql server

Sir Matrix, tienes razon

in | out | queryout | format

Especifica la dirección de la copia masiva. Con la opción in se realiza una copia desde un archivo a la tabla o a la vista de la base de datos. Con la opción out se realiza una copia desde la tabla o desde la vista de la base de datos a un archivo. Sólo se debe especificar queryout al realizar copias de datos masivas desde una consulta. Con la opción format se crea un archivo de formato basado en la opción especificada (-n, -c, -w, -6 o -N) y en los delimitadores de tabla o vista. Si se utiliza format, también debe especificarse la opción -f.

Aunque yo soy de la idea (solo eso), que para la importacion de datos, es mejor utilizar BULK INSERT, tal vez solo sea COSTUMBRE de mi parte.
  #10 (permalink)  
Antiguo 07/01/2008, 07:04
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: insertar datos de un txt a sql server

Hola iislas,
Lei en un manual de microsoft que bcp es bastante antiguo, pero sigue siendo muy útil en determinados casos. De hecho tiene opciones muy similares a Bulk Insert pero en un formato más rudimentario, y también que tiene (bcp) muy poco control de los errores (es decir si hay un registro malo se detiene todo el proceso (aunque tenga una opción de máximo de errores)).

Yo por mi parte le encuentro la ventaja a bcp que no tienes que tener permisos de acceso a los discos del servidor como en Bulk Insert, sino que puedes subir archivos desde cualquier pc con una cuenta sql, que creo que es lo que carlos-paredes necesita.

saludos!!
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #11 (permalink)  
Antiguo 07/01/2008, 13:16
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: insertar datos de un txt a sql server

Como dije, es cuestion de gustos, tal vez, como bien dices, analizar ventajas y desventajas.

Saludos
  #12 (permalink)  
Antiguo 24/02/2008, 05:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: insertar datos de un txt a sql server

Hola!
Soy nueva en SQL server, y la verdad es que me sería de mucha ayuda si me pudieseis ayudar.

Yo estoy trabajando con visual studio 2005 express edition, pero necesito volcar la información de un txt a una tabala de sql server 2005 express edition.

Pero no se donde debo de poner el bulk insert para que funcione??
  #13 (permalink)  
Antiguo 16/05/2008, 16:07
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 2
Respuesta: Re: insertar datos de un txt a sql server

Cita:
Iniciado por Sir Matrix Ver Mensaje
Hola, BCP sirve para las dos direcciones:

bcp tabla in c:/archivo.txt -T -c => lleva un txt a una tabla en sql
bcp tabla out c:/archivo.txt -T -c => vuelca una tabla sql en un txt

Bulk Insert sólo tiene una dirección

saludos!!
  #14 (permalink)  
Antiguo 16/05/2008, 16:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 2
Respuesta: insertar datos de un txt a sql server

Hola que tal Oigan yo intente la sentencia asi tal cual y me arrojo este mensaje

Servidor: mensaje 179, nivel 15, estado 1, línea 1
No se puede usar la opción OUTPUT cuando se pasa una constante a un procedimiento almacenado.

No se si yo este mal o si alguien me pueda explicar?
  #15 (permalink)  
Antiguo 20/05/2008, 12:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 2
Respuesta: insertar datos de un txt a sql server

Oye Carlos intenta esto a mi ya me quedo ojala y te sirva.

BULK INSERT NEPTUNE_TECSA..TECSA_Transmite FROM 'c:\pruebaexp.txt'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

NEPTUNE_TECSA -> base de datos
TECSA_Transmite -> tabla a donde subi los datos

Nota. los dos puntos que estan juntos ".." son parte de la sintaxis van tal cual aparecen ahy.

Es importante que te fijes con que se separa cada campo y como termina cada fila para que los reconosca 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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:04.