none
SQL CONSULTA RRS feed

  • Pregunta

  • Buenos días, requiero de su ayuda tengo una tabla creada REPORTE_VENDEDORES pero esta se encuentra en blanco sin ningún dato, deseo agregarle información a esta tabla pero no se como, la información que tengo para agregar esta en un archivo excel y son 5000 registros, la tabla contiene las siguientes columnas:

    Documento     Estado_Asesor     Nombre Asesor     Regional     Productos

    Gracias.

      
    miércoles, 13 de noviembre de 2019 13:11

Respuestas

  • hola debes hacer una conexión a excel y luego enviar los datos a la tabla de tu sql ....

    protected void ReadExcelFile()
    {        
        string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Documents\TUARCHIVOEXCEL.xlsx;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"";
    
        OleDbConnection origen =  new OleDbConnection(conexion);
    
        OleDbCommand seleccion = default(OleDbCommand);
        seleccion = new OleDbCommand("select * from [Sheet1$]", origen);
    
        OleDbDataAdapter adaptador = new OleDbDataAdapter();
        adaptador.SelectCommand = seleccion;
    
        DataSet ds = new DataSet();
        adaptador.Fill(ds);
        GvParaGuardarValoresDeExcel.DataSource = ds.Tables[0];
        GvParaGuardarValoresDeExcel.DataBind();
        origen.Close();
        SqlConnection conexion_destino = new SqlConnection();
        conexion_destino.ConnectionString = (@"Data Source=sERVIDOR\USR;Initial Catalog=Test;User ID=usrid;Password=TUCLAVE");
        conexion_destino.Open();
        SqlBulkCopy importar = default(SqlBulkCopy);
        importar = new SqlBulkCopy(conexion_destino);
        importar.DestinationTableName = "REPORTE_VENDEDORES";
        importar.WriteToServer(ds.Tables[0]);
        conexion_destino.Close();
    }
    Este metodo te servira de guia... espero te ayude.

    He tomado como base el codigo que publicaste y he realizado algunas modificaciones.

    1.- Descargue e instale el componente de acceso a datos:

    Access Database Engine

    2.- Cree una tabla en SQL:

    CREATE TABLE [dbo].[Prueba]( [Col1] nvarchar NULL, [Col2] nvarchar NULL, [Col3] nvarchar NULL, [Col4] nvarchar NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    3.- En Excel cree un archivo llamado Copy.xls con la misma estructura que la tabla de SQL y adicione datos:

    Estructura de datos en Excel

    4.- En el evento OnClick del botón que tenemos para leer el archivo de Excel adicione el código que publicaste pero con algunos cambios:

    protected void btnReadExcelFile_Click(object sender, EventArgs e)
    {        
        string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\SAND\Libraries\Documents\Copy.xlsx;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"";
    
        OleDbConnection origen =  new OleDbConnection(conexion);
    
        OleDbCommand seleccion = default(OleDbCommand);
        seleccion = new OleDbCommand("select * from [Sheet1$]", origen);
    
        OleDbDataAdapter adaptador = new OleDbDataAdapter();
        adaptador.SelectCommand = seleccion;
    
        DataSet ds = new DataSet();
        adaptador.Fill(ds);
        GvParaGuardarValoresDeExcel.DataSource = ds.Tables[0];
        GvParaGuardarValoresDeExcel.DataBind();
        origen.Close();
        SqlConnection conexion_destino = new SqlConnection();
        conexion_destino.ConnectionString = (@"Data Source=D4MW6WZ1\SAND;Initial Catalog=Test;User ID=usr_Framework;Password=usr_Framework");
        conexion_destino.Open();
        SqlBulkCopy importar = default(SqlBulkCopy);
        importar = new SqlBulkCopy(conexion_destino);
        importar.DestinationTableName = "Prueba";
        importar.WriteToServer(ds.Tables[0]);
        conexion_destino.Close();
    }
    • Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 15:33
    • Marcado como respuesta Cristian8703 miércoles, 13 de noviembre de 2019 15:35
    miércoles, 13 de noviembre de 2019 14:00
  • Si solo tienes que hacer ese traspaso de Excel a la tabla una única vez, entonces es más sencillo importar los datos con el asistente para importar y exportar en SQL Server Management Studio.

    Simplemente haces click derecho en el Examinador de objetos en SSMS, buscas la opción de Importar Datos, y cuando salga el asistente le introduces los datos que te pide (fichero origen y tabla de destino de los datos) y ya está, el asistente se encarga de todo y te pasa los datos del archivo Excel a tu tabla.

    • Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 15:34
    • Marcado como respuesta Cristian8703 miércoles, 13 de noviembre de 2019 15:35
    miércoles, 13 de noviembre de 2019 14:08
    Moderador

Todas las respuestas

  • hola debes hacer una conexión a excel y luego enviar los datos a la tabla de tu sql ....

    protected void ReadExcelFile()
    {        
        string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Documents\TUARCHIVOEXCEL.xlsx;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"";
    
        OleDbConnection origen =  new OleDbConnection(conexion);
    
        OleDbCommand seleccion = default(OleDbCommand);
        seleccion = new OleDbCommand("select * from [Sheet1$]", origen);
    
        OleDbDataAdapter adaptador = new OleDbDataAdapter();
        adaptador.SelectCommand = seleccion;
    
        DataSet ds = new DataSet();
        adaptador.Fill(ds);
        GvParaGuardarValoresDeExcel.DataSource = ds.Tables[0];
        GvParaGuardarValoresDeExcel.DataBind();
        origen.Close();
        SqlConnection conexion_destino = new SqlConnection();
        conexion_destino.ConnectionString = (@"Data Source=sERVIDOR\USR;Initial Catalog=Test;User ID=usrid;Password=TUCLAVE");
        conexion_destino.Open();
        SqlBulkCopy importar = default(SqlBulkCopy);
        importar = new SqlBulkCopy(conexion_destino);
        importar.DestinationTableName = "REPORTE_VENDEDORES";
        importar.WriteToServer(ds.Tables[0]);
        conexion_destino.Close();
    }
    Este metodo te servira de guia... espero te ayude.

    He tomado como base el codigo que publicaste y he realizado algunas modificaciones.

    1.- Descargue e instale el componente de acceso a datos:

    Access Database Engine

    2.- Cree una tabla en SQL:

    CREATE TABLE [dbo].[Prueba]( [Col1] nvarchar NULL, [Col2] nvarchar NULL, [Col3] nvarchar NULL, [Col4] nvarchar NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    3.- En Excel cree un archivo llamado Copy.xls con la misma estructura que la tabla de SQL y adicione datos:

    Estructura de datos en Excel

    4.- En el evento OnClick del botón que tenemos para leer el archivo de Excel adicione el código que publicaste pero con algunos cambios:

    protected void btnReadExcelFile_Click(object sender, EventArgs e)
    {        
        string conexion = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\SAND\Libraries\Documents\Copy.xlsx;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"";
    
        OleDbConnection origen =  new OleDbConnection(conexion);
    
        OleDbCommand seleccion = default(OleDbCommand);
        seleccion = new OleDbCommand("select * from [Sheet1$]", origen);
    
        OleDbDataAdapter adaptador = new OleDbDataAdapter();
        adaptador.SelectCommand = seleccion;
    
        DataSet ds = new DataSet();
        adaptador.Fill(ds);
        GvParaGuardarValoresDeExcel.DataSource = ds.Tables[0];
        GvParaGuardarValoresDeExcel.DataBind();
        origen.Close();
        SqlConnection conexion_destino = new SqlConnection();
        conexion_destino.ConnectionString = (@"Data Source=D4MW6WZ1\SAND;Initial Catalog=Test;User ID=usr_Framework;Password=usr_Framework");
        conexion_destino.Open();
        SqlBulkCopy importar = default(SqlBulkCopy);
        importar = new SqlBulkCopy(conexion_destino);
        importar.DestinationTableName = "Prueba";
        importar.WriteToServer(ds.Tables[0]);
        conexion_destino.Close();
    }
    • Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 15:33
    • Marcado como respuesta Cristian8703 miércoles, 13 de noviembre de 2019 15:35
    miércoles, 13 de noviembre de 2019 14:00
  • Si solo tienes que hacer ese traspaso de Excel a la tabla una única vez, entonces es más sencillo importar los datos con el asistente para importar y exportar en SQL Server Management Studio.

    Simplemente haces click derecho en el Examinador de objetos en SSMS, buscas la opción de Importar Datos, y cuando salga el asistente le introduces los datos que te pide (fichero origen y tabla de destino de los datos) y ya está, el asistente se encarga de todo y te pasa los datos del archivo Excel a tu tabla.

    • Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 15:34
    • Marcado como respuesta Cristian8703 miércoles, 13 de noviembre de 2019 15:35
    miércoles, 13 de noviembre de 2019 14:08
    Moderador
  • Hola, cuando ejecuto esto me sale un error:

    Messages
    Error 0xc0202009: Source - 'Ivi Asesores F$' [1]: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
     (SQL Server Import and Export Wizard)
     
    Error 0xc02020e8: Source - 'Ivi Asesores F$' [1]: Opening a rowset for "'Ivi Asesores F$'" failed. Check that the object exists in the database.
     (SQL Server Import and Export Wizard)
     
    Excepción de HRESULT: 0xC02020E8 (Microsoft.SqlServer.DTSPipelineWrap)

    miércoles, 13 de noviembre de 2019 15:02
  • Debe haber algún dato mal indicado en el asistente, o alguna configuración rara en el fichero Excel. Tienes una guía sobre cómo se usa aquí:

    https://docs.microsoft.com/es-es/sql/integration-services/load-data-to-from-excel-with-ssis?view=sql-server-ver15

    Si fuera necesario, aquí tienes otras opciones para importar desde Excel:

    https://docs.microsoft.com/es-es/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-ver15

    Por cierto, cuando ejecutas el asistente normalmente te da dos opciones para los nombres de las Hojas del fichero: un nombre con $ y el otro sin $. En mi experiencia es común que uno funcione y el otro no. Repite la prueba usando el otro nombre.

    Otro truco que funciona bastante bien es decirle a Excel que salve el archivo en formato CSV, y luego desde el asistente importar el CSV (es la opción "fichero de texto plano").


    miércoles, 13 de noviembre de 2019 19:45
    Moderador