excel里有几万条数据,如何插入SQL2000;另外数据库里有几万条数据导入EXCEL

时间:2021-07-07 23:36:47
excel里有几万条数据,如何插入SQL2000,一条条插入速度太慢;另外数据库里有几万条数据导入EXCEL。注:数据库的表头与excel的表头不一样,一个是英文,一个是中文。

请各位大虾赐教,本人急,谢谢了~~~

我用的是VS2005 C#

13 个解决方案

#1


用数据库的“导入导出数据”工具,先按表格中的字段建立表
再通过语句插入到要用的表中

#2


1.直接导入导出,哈哈.
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
                    ///*將Excel讀到DataTable方便資料篩選*/
                    //OleDbConnection OleDbConn = new OleDbConnection();
                    //OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
                    //DataTable dataTable = null;
                    //DT = new DataTable("ExcelTable");

                    //OleDbConn.Open();
                    //dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    //String SheetName = "";
                    //foreach (DataRow row in dataTable.Rows)
                    //{
                    //    SheetName = row["TABLE_NAME"].ToString();
                    //    break;
                    //}
                    //OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);


                    //OleDbDA.Fill(DT);
                    //OleDbConn.Close();
                    //dataGridView1.DataSource = DT;

#3


建议重命名成.csv

#4


DTS

#5


以下方法(以前我的项目里用到的)你试一下,手工写特环导出.速率我测了一下,很好.

#region 导出Excel表
        /// <summary>
        /// 名称:WriteToExcel
        /// 功能:查询结果导出Execl
        /// 编写人:
        /// 编写时间:2008-11-26
        /// </summary>
        /// <param name="table"></param>
        public void WriteToExcel(DataTable table)
        {
            try
            {
                string tempImagePath = Application.StartupPath;
                string temp = tempImagePath + "\\ExeclFiles";
                Directory.CreateDirectory(@temp);
                string strFilePath = @Application.StartupPath + @"\ExeclFiles\" + CommonClass.CommonDateTime() + ".xls";
                System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath,true, System.Text.Encoding.Default);
                object[] values = new object[table.Columns.Count];
                for (int i = 0; i < table.Columns.Count; ++i)
                {
                    if (table.Columns[i].Caption.ToString() == "你的英文名字")
                    {
                        table.Columns[i].Caption = "改为中文";
                    }
                    
                    sw.Write(table.Columns[i].Caption.ToString());
                    sw.Write('\t');
                }
                sw.Write("\r\n");
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    for (int j = 0; j < values.Length; ++j)
                    {
                        sw.Write(table.Rows[i][j].ToString());
                        sw.Write('\t');
                    }
                    sw.Write("\r\n");
                }
                sw.Flush();
                sw.Close();
                CommonClass.MessageBoxOK("成功导出[" + ds.Tables[0].Rows.Count.ToString() + "]行到Execl!");
            }
            catch
            {
                CommonClass.MessageBoxNo("导出Execl失败!");
            }
        }

#6


ssis

#7


我做了一个小软件 可以做到需要的联系我QQ119896930

#8


几万条数据导入EXCEL?!

⊙﹏⊙b汗

#9



导入 
SELECT *
FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')


SELECT   * 
FROM   OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',   
            'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]


导出 

如何使用BCP导出数据  
 (1) 使用BCP导出整个表或视图。 

BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接 

或 

BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接 

#10


收藏!

#11


用BCP把,速度超级快,100多M的csv导入也不过几秒。


using (SqlBulkCopy bcp = new SqlBulkCopy(sqlConnString))
{
//一次批量的插入的数据量
bcp.BatchSize = BatchSize;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的行都会从目标表中移除
bcp.BulkCopyTimeout = BulkCopyTimeout;

//设定通知属性,以便在每插入设定条数据时,呼叫相应事件
bcp.NotifyAfter = NotifyAfter;
bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);

//设置要批量写入的目标表
bcp.DestinationTableName = TableName;
//批量写入
bcp.WriteToServer(csvreader);
}

#12


excel作为数据库导入,数据大的时候,速度不怎么样把

#13


使用sql server中的导入导出。或分多sheet,使用多线程实现导入
还有SqlBulkCopy  批处理

#1


用数据库的“导入导出数据”工具,先按表格中的字段建立表
再通过语句插入到要用的表中

#2


1.直接导入导出,哈哈.
2.以前写的,把EXCEL读到datatable然后FILL到datagridview里的,简单思路...仅作参考...(都被自己注释了.哈)
                    ///*將Excel讀到DataTable方便資料篩選*/
                    //OleDbConnection OleDbConn = new OleDbConnection();
                    //OleDbConn.ConnectionString = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + labExcelPath.Text + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
                    //DataTable dataTable = null;
                    //DT = new DataTable("ExcelTable");

                    //OleDbConn.Open();
                    //dataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    //String SheetName = "";
                    //foreach (DataRow row in dataTable.Rows)
                    //{
                    //    SheetName = row["TABLE_NAME"].ToString();
                    //    break;
                    //}
                    //OleDbDataAdapter OleDbDA = new OleDbDataAdapter("SELECT * FROM [" + SheetName.Replace("$", "") + "$]", OleDbConn);


                    //OleDbDA.Fill(DT);
                    //OleDbConn.Close();
                    //dataGridView1.DataSource = DT;

#3


建议重命名成.csv

#4


DTS

#5


以下方法(以前我的项目里用到的)你试一下,手工写特环导出.速率我测了一下,很好.

#region 导出Excel表
        /// <summary>
        /// 名称:WriteToExcel
        /// 功能:查询结果导出Execl
        /// 编写人:
        /// 编写时间:2008-11-26
        /// </summary>
        /// <param name="table"></param>
        public void WriteToExcel(DataTable table)
        {
            try
            {
                string tempImagePath = Application.StartupPath;
                string temp = tempImagePath + "\\ExeclFiles";
                Directory.CreateDirectory(@temp);
                string strFilePath = @Application.StartupPath + @"\ExeclFiles\" + CommonClass.CommonDateTime() + ".xls";
                System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath,true, System.Text.Encoding.Default);
                object[] values = new object[table.Columns.Count];
                for (int i = 0; i < table.Columns.Count; ++i)
                {
                    if (table.Columns[i].Caption.ToString() == "你的英文名字")
                    {
                        table.Columns[i].Caption = "改为中文";
                    }
                    
                    sw.Write(table.Columns[i].Caption.ToString());
                    sw.Write('\t');
                }
                sw.Write("\r\n");
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    for (int j = 0; j < values.Length; ++j)
                    {
                        sw.Write(table.Rows[i][j].ToString());
                        sw.Write('\t');
                    }
                    sw.Write("\r\n");
                }
                sw.Flush();
                sw.Close();
                CommonClass.MessageBoxOK("成功导出[" + ds.Tables[0].Rows.Count.ToString() + "]行到Execl!");
            }
            catch
            {
                CommonClass.MessageBoxNo("导出Execl失败!");
            }
        }

#6


ssis

#7


我做了一个小软件 可以做到需要的联系我QQ119896930

#8


几万条数据导入EXCEL?!

⊙﹏⊙b汗

#9



导入 
SELECT *
FROM openrowset('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\aa.xls','select * from [sheet1$]')


SELECT   * 
FROM   OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',   
            'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]


导出 

如何使用BCP导出数据  
 (1) 使用BCP导出整个表或视图。 

BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密码连接 

或 

BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任连接 

#10


收藏!

#11


用BCP把,速度超级快,100多M的csv导入也不过几秒。


using (SqlBulkCopy bcp = new SqlBulkCopy(sqlConnString))
{
//一次批量的插入的数据量
bcp.BatchSize = BatchSize;
//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的行都会从目标表中移除
bcp.BulkCopyTimeout = BulkCopyTimeout;

//设定通知属性,以便在每插入设定条数据时,呼叫相应事件
bcp.NotifyAfter = NotifyAfter;
bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);

//设置要批量写入的目标表
bcp.DestinationTableName = TableName;
//批量写入
bcp.WriteToServer(csvreader);
}

#12


excel作为数据库导入,数据大的时候,速度不怎么样把

#13


使用sql server中的导入导出。或分多sheet,使用多线程实现导入
还有SqlBulkCopy  批处理