excel里有几万条数据,如何插入SQL2000,一条条插入速度太慢;另外数据库里有几万条数据导入EXCEL。注:数据库的表头与excel的表头不一样,一个是英文,一个是中文。请各位大虾赐教,本人急,谢谢了~~~我用的是VS2005 C#
解决方案 »
- 奇了怪,这样的查询语句有问题?
- gridcontrol控件控制问题! 急急急
- 如何将vs2008中的报表导出到excel2007中。在线等
- 急!!!!! 打印机为什么出白单???急!!!!!
- 关于lock和monitor的问题.
- 如何用C#做一个用来测试服务器到底可以承受多少线程(客户端)的软件,高手请进
- oracle10g 中如何彻底的删除表????
- XML问题,在线等待~~~
- 怎样从流里读取图片进行 识别啊? 我用的是次时代。
- 急急急 第一次用C#写网页做很简单很简单的数据挖掘 rd = cmd.ExecuteReader();写入报错:无效的标记
- c#实现FTP上传文件夹时文件夹名称带空格?再线等答案
- Lampda 表达式里为什么不能捕获错误?只限高手回答。。。。。。。。。。
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;
/// <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失败!");
}
}
导入
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 --使用信任连接
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);
}
还有SqlBulkCopy 批处理