none
Buenos días me podrían ayudar tengo datos en excel y quiero pasarlos a sql 2014 RRS feed

  • Pregunta

  • Buenos días me podrían ayudar tengo datos en excel y quiero pasarlos a sql 2014 pero me sale este error si me puede ayudar se les agrade seria mucho

    Willian61x

    lunes, 11 de septiembre de 2017 14:25

Respuestas

  • Hola William.

    Este escenario que presentas es común en la transformación de datos. te recomiendo que en tu base de datos tengas dos tablas, una temporal y una final.

    En tu tabla temporal crea columnas con tipos de datos NVARCHAR y una longitud que consideres en la que entrarán los campos; aunque la exportación te muestre indicadores amarillos, los datos serán cargados en la tabla.

    Finalmente con t-sql inserta los datos de la tabla temporal a la tabla final haciendo uso de CAST o CONVERT en los campos que lo querieran para forzar el cambio de tipo de dato.

    Esto también lo podrías simplicicar con Integration Services.

    Saludos.


    eric

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    miércoles, 13 de septiembre de 2017 15:39
  • Hola Willian61x

    Entonces con esta tabla Productos$ que se ha formado por defecto, puedes realizar la importación hacia tu verdadera tabla. Lo que si es cierto, es que deberás tener cuidado con los tipos de datos para que puedas convertirlos. Por ejemplo:

    insert into nombredetutabla
    select cast(idproducto as int), cast(idcategoria as int) .....
    From Productos$

    lo tendrías que hacer campo por campo.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    miércoles, 13 de septiembre de 2017 23:08
  • insert into Producto
    select cast(idproductos as int), cast(idcategoria as int), cast(Producto as varchar),cast(precio_Compra as decimal), cast(precio_de_venta as decimal),cast(descripcion as varchar), cast(codigo_barras as varchar), cast(codigo as varchar), cast(proveedor as varchar), cast(Ganancia as decimal), cast(imagen as image)
    From Producto$

    la sentencia esta asi pero me sale error

    Mens. 529, Nivel 16, Estado 2, Línea 20
    No se permite la conversión explícita del tipo de datos nvarchar a image.


    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 2:08
  • Gracias si me sirvió perdón por no responder antes estuve ocupado muchas gracias una ultima pregunta se inserto bien todo pero en visual studion no me muestra desde el costo de compra en los texbox pero cuando guardo desde el visual me aparecen normalmente

    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 23:43
    viernes, 15 de septiembre de 2017 20:29
  • me sale igual

    Mens. 8101, Nivel 16, Estado 1, Línea 2
    Sólo puede especificarse un valor explícito para la columna de identidad de la tabla 'Producto' cuando se usa una lista de columnas e IDENTITY_INSERT es ON.


    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 2:44
  • Debes indicar la lista de columnas:

    SET IDENTITY_INSERT dbo.Producto ON;
    INSERT INTO Producto (idproductos, idcategoria, Producto, ..., Ganancia)
    SELECT 
        CONVERT(int, idproductos), 
        CONVERT(int, idcategoria), 
        CONVERT(varchar(100), Producto),
        CONVERT(decimal(18,6), precio_Compra), 
        CONVERT(decimal(18,6), precio_de_venta),
        CONVERT(varchar(400), descripcion), 
        CONVERT(varchar(40), codigo_barras), 
        CONVERT(varchar(10), codigo), 
        CONVERT(varchar(50), proveedor), 
        CONVERT(decimal(18,6), Ganancia)
    From Producto$;


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:29
    jueves, 14 de septiembre de 2017 4:04
  • Hola William.

    La columna del ID del Producto la debes de tener como identity autoincrementable, por lo que debes especificar en T-SQL que esa columna recibirá valores en tu consulta.

    La resupuesta de Williams Morales debería de funcionarte.

    Saludos.


    eric

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 13:21

Todas las respuestas

  • Hola Willian61x

    A pesar que no se nota mucho los errores que te está lanzando la importación, se puede observar algunos como que el formato que utilizar en excel no es el mismo con las columnas de la tabla a la cual deseas importar. Asimismo, es probable que estés queriendo insertar más caracteres, cuando en tu destino tienes menos, revísalo.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    lunes, 11 de septiembre de 2017 16:35
  • buenas tarde el formato es xls por que el xlsx me da un error que o esta registrado algo asi 

    el excel esta asi


    Willian61x

    lunes, 11 de septiembre de 2017 18:30
  • Hola Willian61x

    Me es imposible solo con esa imagen poder indicarte cuál podría ser lo que esté afectando la  importación; sin embargo, te hago la sugerencia que deberías considerar, por ejemplo, lo siguiente:

    Campos en mi Tabla

    Campo1 varchar(20),
    Campo2 int,
    Campo3 date

    Si analizamos la tabla, se puede aprecia lo siguiente:

    - Tenemos como primer campo un varchar de hasta 20 caracteres, lo cual indica que en excel debes también tener un texto de hasta 20, ya que si tienes 21 ese sería un error.

    - Tenemos como segundo campo un int, lo cual indica que en excel, dicha columna debería ser formato numérico.

    - Tenemos como tercer campo un date, lo que también indicaría ser cauteloso con el formato de la columna de excel (tipo fecha)

    Como conclusión, se debe llegar a que los campos debes ser iguales a las columnas, en tipo de dato y en el orden que les estés enviando.

    Saludos



    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    lunes, 11 de septiembre de 2017 18:38
  • ¿Utilizas el asistente para la importación de datos?

    De ser así válida que los tipos, tamaño, escala, precisión, etc., correspondan con el valor que intentas importar. Para corroborar el mapping pincha sobre el botón [Editar asignaciones...] (creo que está en la tercera ventana del asistente) y "setea" los parámetros según la estructura del origen.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    lunes, 11 de septiembre de 2017 18:44
  • los datos estan asi


    Willian61x

    lunes, 11 de septiembre de 2017 19:50
  • Ingresa a este enlace e intenta utilizar el edit mappings, ese campo image? fíjate y tantea. Como te decía en una respuesta anterior, es probable que exista algún registro que sobrepase la precisión del los campos o esté intentando guardar un tipo de dato en el que no corresponde

    Asignaciones de columnas (Asistente para importación y exportación de SQL Server)

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    lunes, 11 de septiembre de 2017 21:12
  • En el equipo donde abres el archivo '*.xls' que adjuntas, ¿tienes configurado el carácter de coma (,) como separador de decimales? ¿o las columnas 'precio' y 'ganancia' (en el archivo *.xls) son valores que se resuelven como "TEXTO"?. Lo pregunto porque si el asistente infiere un tipo varchar() entonces es mas que claro que al hacer la conversión al tipo decimal obtendrás el error dado que se espera el punto (.) como separador decimal, no la coma. 

    Esperamos tus comentarios.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    lunes, 11 de septiembre de 2017 21:35
  • los toma como doubles el teclado esta en español españa y el punto lo trasforma a coma en excel


    Willian61x

    lunes, 11 de septiembre de 2017 22:09
  • la columna imagen en excel esta sin datos 

    Willian61x

    lunes, 11 de septiembre de 2017 23:06
  • Pero es lo que estamos tratando de decirte, observa que te muestra en amarillo y te dice por ejemplo el idProducto, tu tabla espera un tipo int y le estás enviando un double (desde tu excel). En todo caso en tu excel puedes dar el formato columna por columna, posicionarte y decirle que debe ser entero.

    En el caso de la imagen también tienes una observación. Fíjate que esperas tipo image y le envías tipo varchar. Es preferible en la importación lo omitas, ya que desde el excel no podrás importar una imagen al sql.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 12 de septiembre de 2017 5:50
  • si trato de cambiar en excel todo eso pero me sige saliendo esos items en amarillo


    Willian61x

    miércoles, 13 de septiembre de 2017 14:54
  • intenta cargar los datos omitiendo la columna imagen y ve descartando cuál es el que te genera problemas. Por ejemplo, de existir alguna advertencia para convertir de int a double déjalo pasar. No tienes otra opción que ir descartando.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    miércoles, 13 de septiembre de 2017 15:03
  • Hola William.

    Este escenario que presentas es común en la transformación de datos. te recomiendo que en tu base de datos tengas dos tablas, una temporal y una final.

    En tu tabla temporal crea columnas con tipos de datos NVARCHAR y una longitud que consideres en la que entrarán los campos; aunque la exportación te muestre indicadores amarillos, los datos serán cargados en la tabla.

    Finalmente con t-sql inserta los datos de la tabla temporal a la tabla final haciendo uso de CAST o CONVERT en los campos que lo querieran para forzar el cambio de tipo de dato.

    Esto también lo podrías simplicicar con Integration Services.

    Saludos.


    eric

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    miércoles, 13 de septiembre de 2017 15:39
  • la imagen fue lo primero que descarte pero sigue dando problemas no me funciono ni creando otra tabla exagerando los campos con valores  lo que me dejo pasar los datos es creando una tabla nueva temporal  me crea productos$ pero quiero trabajar en esa tabla y no me deja peor el idproductos y peor hacerla auto incrementa ble

    Willian61x

    miércoles, 13 de septiembre de 2017 23:00
  • buenas tardes como es eso de convertir los datos no tengo mucha idea de esto estoy haciendo un sistema de ventas para mi uso pero lo poco que se no me vasta y algo de ayuda en Internet y en forros  si me puedes ayudar con un ejemplo te lo agrade seria 

    Willian61x

    miércoles, 13 de septiembre de 2017 23:04
  • Hola Willian61x

    Entonces con esta tabla Productos$ que se ha formado por defecto, puedes realizar la importación hacia tu verdadera tabla. Lo que si es cierto, es que deberás tener cuidado con los tipos de datos para que puedas convertirlos. Por ejemplo:

    insert into nombredetutabla
    select cast(idproducto as int), cast(idcategoria as int) .....
    From Productos$

    lo tendrías que hacer campo por campo.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    miércoles, 13 de septiembre de 2017 23:08
  • insert into Producto
    select cast(idproductos as int), cast(idcategoria as int), cast(Producto as varchar),cast(precio_Compra as decimal), cast(precio_de_venta as decimal),cast(descripcion as varchar), cast(codigo_barras as varchar), cast(codigo as varchar), cast(proveedor as varchar), cast(Ganancia as decimal), cast(imagen as image)
    From Producto$

    la sentencia esta asi pero me sale error

    Mens. 529, Nivel 16, Estado 2, Línea 20
    No se permite la conversión explícita del tipo de datos nvarchar a image.


    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 2:08
  • Convierte los tipos incluyendo el tamaño, escala y precisión, caso contrario las longitudes podrían truncarse.

    INSERT INTO Producto
    SELECT 
        CONVERT(int, idproductos), 
        CONVERT(int, idcategoria), 
        CONVERT(varchar(100), Producto),
        CONVERT(decimal(18,6), precio_Compra), 
        CONVERT(decimal(18,6), precio_de_venta),
        CONVERT(varchar(400), descripcion), 
        CONVERT(varchar(40), codigo_barras), 
        CONVERT(varchar(10), codigo), 
        CONVERT(varchar(50), proveedor), 
        CONVERT(decimal(18,6), Ganancia), 
        NULL
    From Producto$;


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    jueves, 14 de septiembre de 2017 2:24
  • lo siento por ser pesado pero  me sale este error

    Mens. 8101, Nivel 16, Estado 1, Línea 1

    Sólo puede especificarse un valor explícito para la columna de identidad de la tabla 'Producto' cuando se usa una lista de columnas e IDENTITY_INSERT es ON.


    Willian61x

    jueves, 14 de septiembre de 2017 2:33
  • me sale igual

    Mens. 8101, Nivel 16, Estado 1, Línea 2
    Sólo puede especificarse un valor explícito para la columna de identidad de la tabla 'Producto' cuando se usa una lista de columnas e IDENTITY_INSERT es ON.


    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 2:44
  • Debes indicar la lista de columnas:

    SET IDENTITY_INSERT dbo.Producto ON;
    INSERT INTO Producto (idproductos, idcategoria, Producto, ..., Ganancia)
    SELECT 
        CONVERT(int, idproductos), 
        CONVERT(int, idcategoria), 
        CONVERT(varchar(100), Producto),
        CONVERT(decimal(18,6), precio_Compra), 
        CONVERT(decimal(18,6), precio_de_venta),
        CONVERT(varchar(400), descripcion), 
        CONVERT(varchar(40), codigo_barras), 
        CONVERT(varchar(10), codigo), 
        CONVERT(varchar(50), proveedor), 
        CONVERT(decimal(18,6), Ganancia)
    From Producto$;


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:29
    jueves, 14 de septiembre de 2017 4:04
  • Hola William.

    La columna del ID del Producto la debes de tener como identity autoincrementable, por lo que debes especificar en T-SQL que esa columna recibirá valores en tu consulta.

    La resupuesta de Williams Morales debería de funcionarte.

    Saludos.


    eric

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 20:30
    jueves, 14 de septiembre de 2017 13:21
  • Gracias si me sirvió perdón por no responder antes estuve ocupado muchas gracias una ultima pregunta se inserto bien todo pero en visual studion no me muestra desde el costo de compra en los texbox pero cuando guardo desde el visual me aparecen normalmente

    Willian61x

    • Marcado como respuesta Willian61x viernes, 15 de septiembre de 2017 23:43
    viernes, 15 de septiembre de 2017 20:29