SqlBulkCopy 可否复制Access数据库数据到SqlServer 数据库中?

applelure 2008-09-27 06:42:15
SqlBulkCopy 可否复制Access数据库数据到SqlServer 数据库中?
如果可以,能否给个段代码?
...全文
290 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
applelure 2008-09-27
  • 打赏
  • 举报
回复
嗯,弄好了.大概代码是这样的,还是贴出来吧.会帮助更多人...

string strConnection = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=App_Data\A.mdb";
using (OleDbConnection conn1 = new OleDbConnection(strConnection))
{
OleDbCommand cmd = new OleDbCommand("SELECT Data FROM table1",conn1);
conn1.Open();
OleDbDataReader oddr = cmd.ExecuteReader();
//using (System.Data.OleDb.OleDbDataAdapter odda = new OleDbDataAdapter("SELECT * FROM table1", strConnection))
//{
// odda.Fill(ds);
//}
string strConn = @"Data Source=.\SqlExpress;Database=B;uid=sa;pwd=123";
using (SqlConnection conn = new SqlConnection(strConn))
{
conn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "dbo.table2";

try
{
// Write from the source to the destination.

bulkCopy.WriteToServer(oddr);
Response.Write("<script>alert('复制成功!')</script>");
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
oddr.Close();

}
}
}
}
fcuandy 2008-09-27
  • 打赏
  • 举报
回复
可以,先打开access,然后将某个表数据加入 datatable

最后 SqlBulkCopy的实例.WriteToServer (DataTable)

参见联机丛书就可以了。 里面有例子,代码就不用写了


oledbconnection olecn = ....连到access;
oledbcommand olecmd = 打开access某个表
datatable accessTable = 处理加载那个表的数据;

sqlconnection cn = ... 连到sqlserver...
sqlbuldcopy bcp = new ..
步聚就是这样了。


applelure 2008-09-27
  • 打赏
  • 举报
回复
wufeng4552
这种方法我也想过,取出放到DataSet中,后插入到SQLServer数据库中,
少量数据,还好.
但是到几十万条数据的话,效率就不行了....
水族杰纶 2008-09-27
  • 打赏
  • 举报
回复
1.在SQL SERVER里查询access数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
-------------------------------------------------------------------------------------------------
2.将access导入SQL server
-- ======================================================
在SQL SERVER 里运行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
-------------------------------------------------------------------------------------------------
3.将SQL SERVER表里的数据插入到Access表中
-- ======================================================
在SQL SERVER 里运行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表
实例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename
-------------------------------------------------------------------------------------------------
水族杰纶 2008-09-27
  • 打赏
  • 举报
回复
帮顶了~~~~

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧