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

Socorro!!! Expertos de BULK INSERT ayudarme!!!

Estas en el tema de Socorro!!! Expertos de BULK INSERT ayudarme!!! en el foro de SQL Server en Foros del Web. El telefono no puede ser int, ya que no es un valor matematico, debe ser varchar. Tambien te recomendaria que la fecha sea varchar. En ...

  #31 (permalink)  
Antiguo 06/10/2010, 08:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

El telefono no puede ser int, ya que no es un valor matematico, debe ser varchar.
Tambien te recomendaria que la fecha sea varchar. En un siguiente paso podrias crear una columna datetime donde convertirias la fecha.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #32 (permalink)  
Antiguo 06/10/2010, 08:45
Avatar de gustavoh10  
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Cita:
Iniciado por dikcc Ver Mensaje
Parece que actualmente la única persona que quiere ayudarme eres tu.

El formato de texto a introducir sería el siguiente:

1$20091209%
Nombre$Apellidos$Teléfono$FechaNacimiento%
Antonio$Garcia$655655655$12/12/1980%
Antonio$Gonzales$616616616$12/02/1981%

El teléfono como INT y la fecha como DATETIME.

Thanks
No se como será la estructura donde guardas los datos, pero te recomiendo, para que sea mas fácil, si ya probaste que te funciono como se mencionó antes, que pongas todos tus campos en formato texto (como dijo el amigo antes)
después simplemente haces un storeprocedure para pasar la fecha de formato texto a datetime. (y cuando terminaste borras el campo texto y borras el datetime)

pasos sugeridos
1 - creas tu estructura con todos los campos en formato texto (menos el ID)
2 - realizas la inserción
3 - creas un campo datetime para la fecha
4 - realizas la conversión
5 - borras el/los campos que no usas

saludos!
  #33 (permalink)  
Antiguo 07/10/2010, 04:34
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Debo ser increiblemente torpe. Comienzo:

* Estructura de la tabla tblUsuarios --> nombre varchar(100), apellidos varchar(100), direccion varchar(100)

* Formato del fichero usuarios.txt -->

1$20100904;
nombre$apellidos$direccion;
Antonio$Perez$ ;(Esto me gustaría que significara dirección vacia)
Felipe$Muñoz$Calle Sin Numero;
Lola$Sierra$Calle Con Numero;

* Instrucción para inserción -->
BULK INSERT tblUsuarios
FROM 'C:\usuarios.txt'
WITH(FIRSTROW = 2, ROWTERMINATOR = '$', FIELDTERMINATOR = ';')

El fallo que me aparece es el siguiente:

Mens. 4832, Nivel 16, Estado 1, Línea 1
Carga masiva: fin de archivo inesperado en el archivo de datos.
Mens. 7301, Nivel 16, Estado 2, Línea 1
No se puede obtener ("IID_IColumnsInfo") del proveedor OLE DB "BULK" para el servidor vinculado "(null)".

¿Alguien sabe que puede pasar?

Gracias
  #34 (permalink)  
Antiguo 07/10/2010, 04:41
Avatar de gustavoh10  
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Cita:
Iniciado por dikcc Ver Mensaje
Debo ser increiblemente torpe. Comienzo:

* Estructura de la tabla tblUsuarios --> nombre varchar(100), apellidos varchar(100), direccion varchar(100)

* Formato del fichero usuarios.txt -->

1$20100904;
nombre$apellidos$direccion;
Antonio$Perez$ ;(Esto me gustaría que significara dirección vacia)
Felipe$Muñoz$Calle Sin Numero;
Lola$Sierra$Calle Con Numero;

* Instrucción para inserción -->
BULK INSERT tblUsuarios
FROM 'C:\usuarios.txt'
WITH(FIRSTROW = 2, ROWTERMINATOR = '$', FIELDTERMINATOR = ';')

El fallo que me aparece es el siguiente:

Mens. 4832, Nivel 16, Estado 1, Línea 1
Carga masiva: fin de archivo inesperado en el archivo de datos.
Mens. 7301, Nivel 16, Estado 2, Línea 1
No se puede obtener ("IID_IColumnsInfo") del proveedor OLE DB "BULK" para el servidor vinculado "(null)".

¿Alguien sabe que puede pasar?

Gracias
Podes sacar la fila que tiene la dirección vacía y probar si eso te causa el error.
No deberías comenzar con la fila 3?
Fijate no dejar un enter al final del archivo.
  #35 (permalink)  
Antiguo 07/10/2010, 05:12
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Pero si saco la fila con la dirección vacia no dará error por que necesitaría insertar algo???
  #36 (permalink)  
Antiguo 07/10/2010, 05:13
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Ahora da ese error

Mens. 4866, Nivel 16, Estado 7, Línea 1
Error de carga masiva. Columna demasiado larga en el archivo de datos para la fila 1, columna 1. Compruebe que especificó correctamente los valores para el terminador de campo y el terminador de fila.
Mens. 7301, Nivel 16, Estado 2, Línea 1
No se puede obtener ("IID_IColumnsInfo") del proveedor OLE DB "BULK" para el servidor vinculado "(null)".
  #37 (permalink)  
Antiguo 07/10/2010, 05:25
Avatar de gustavoh10  
Fecha de Ingreso: diciembre-2005
Ubicación: ARGENTINA
Mensajes: 196
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Cita:
Iniciado por dikcc Ver Mensaje
Ahora da ese error

Mens. 4866, Nivel 16, Estado 7, Línea 1
Error de carga masiva. Columna demasiado larga en el archivo de datos para la fila 1, columna 1. Compruebe que especificó correctamente los valores para el terminador de campo y el terminador de fila.
Mens. 7301, Nivel 16, Estado 2, Línea 1
No se puede obtener ("IID_IColumnsInfo") del proveedor OLE DB "BULK" para el servidor vinculado "(null)".
La tabla donde insertas tiene un campo ID??
Tiene seteado este un identity?

Postea todo tu código sql para armar la tabla y el archivo y lo pruebo
  #38 (permalink)  
Antiguo 07/10/2010, 08:24
 
Fecha de Ingreso: junio-2010
Mensajes: 134
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

CREATE TABLE [dbo].[tblUsuarios](
[nombre] [varchar](100) NULL,
[apellido] [varchar](100) NULL,
[direccion] [varchar](100) NULL
)
  #39 (permalink)  
Antiguo 07/10/2010, 10:17
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
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

dikcc

Estas asumiendo que el TELEFONO es INT y la FECHA es DATETIME, pero en lo personal, me ha pasado que los archivos que se reciben, muchas veces NO CUMPLEN con esta regla (INT, DATETIME), por eso es que se "levantan" los registros como VARCHAR y despues se hace un analisis de dichos registros.
__________________
MCTS Isaias Islas
  #40 (permalink)  
Antiguo 07/12/2010, 09:33
Avatar de mazingerz  
Fecha de Ingreso: febrero-2003
Ubicación: Sarasota FL
Mensajes: 147
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Hola a todos, yo tengo el mismo problema y el tema pareciera ser el largo del TXT. El tema que estos archivos TXT son generados por aplicaciones externas.
Bueno este es mi archivo, mi tabla


Archivo TXT sin delimitadores, uso el espacio entre cada columna
408-583-7234 INTCEL 76 GAS STATION 12/03/2010 03:03 2 13 Security code command time-out
530-718-8662 INTCEL DISCOUNT FRUIT & LIQUOR 12/03/2010 02:58 2 13 Security code command time-out
916-230-5051 INTCEL DISCOUNT FRUIT & LIQUOR 12/03/2010 06:07 2 85 Firmware verify time-out

Esta es mi Base
CREATE TABLE [dbo].[TMPCommError] (
[CESiteId] [char] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CEGroupId] [char] (17) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CEdescription] [char] (34) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CEDate] [char] (17) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CEport] [nchar] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CECommErr] [nchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CECommErrDesc] [char] (31) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

mi Script
BULK INSERT TMPCommError From "C:\path_reports\CE_IN.TXT"
WITH (

FIELDTERMINATOR = ' ',
ROWTERMINATOR = '\n'
)

No importa nada y me sale este error.
Bulk insert data conversion error (truncation) for row 1, column 7 (CECommErrDesc).
  #41 (permalink)  
Antiguo 07/12/2010, 10:52
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
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

Viendo tu primer registros, tienes 13 campos separados por ESPACIOS, menor al descrito en la tabla.
__________________
MCTS Isaias Islas
  #42 (permalink)  
Antiguo 09/12/2010, 19:44
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Socorro!!! Expertos de BULK INSERT ayudarme!!!

hace poco consulte por bulk insert
y llegue a este sitio el cual me ayudo
no es complicado de hecho yo debia pasar un excel automaticamente a sql server 2005 y lo logre

http://huamanpunlay.wordpress.com/2009/05/27/cargar-archivo-txt-o-csv-a-una-tabla-en-sql-server-2008/

http://rahsuarez.wordpress.com/2010/04/14/importar-archivo-csv-a-sql-server-mediante-bulk-insert/

aqui estan los 2 sitios.

saludos.

Etiquetas: bulk, insert
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 3 personas




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