| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1600 人关注过本帖
标题:Excel与MSSQL互导的SQL语句
只看楼主 加入收藏
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:7 
Excel与MSSQL互导的SQL语句
SELECT * into Library
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="E:\022n.xls";
User ID=Admin;Password=;
Extended properties=Excel 5.0')...table1


我搜索是这样,但是User ID和Password是指什么?我安装时是本地连接,没有设置用户和密码

那ID该怎么写?



excel到MSSQL的SQL语句在2楼,MSSQL到excel的SQL语句在6楼,ADO.NET的语句在7楼



[此贴子已经被作者于2006-3-16 12:07:51编辑过]

搜索更多相关主题的帖子: SQL Excel 语句 
2006-03-16 10:26
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
在SQL查询分析器运行这个成功了,但在ADO.NET不成功,怎么办?

SELECT * into live41
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="E:\022n.xls";
User ID=;Password=;
Extended properties=Excel 5.0')...[Sheet1$]
2006-03-16 10:52
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

搞定了,原来是转义符的问题,

在C#下利用ADO.NET把Excel表直接导入到SQL Server 2000的代码如下:


SqlConnection sqlConnection1 = new SqlConnection("server=(local);integrated security=SSPI;initial catalog=Library");
//SqlConnection sqlConnection1 = new SqlConnection();
//sqlConnection1.ConnectionString = "server=(local);integrated security=SSPI;initial catalog=Library";

string importSQL = "SELECT * into live41 FROM OpenDataSource" +
"('Microsoft.Jet.OLEDB.4.0','Data Source=" + "\"" + "E:\\022n.xls" + "\"" +
"; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet1$]";

//把E:\022n.xls的Sheet1$表 创建到Library数据库的live41表中

try
{
sqlConnection1.Open();

SqlCommand sqlCommand1 = new SqlCommand();
sqlCommand1.Connection = sqlConnection1;
sqlCommand1.CommandText = importSQL;

sqlCommand1.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}

2006-03-16 11:01
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
问题又来了,为什么导入以后的字段顺序不对啊?!

例如excel里面本来是学号、姓名、成绩,到SQL Server里面的顺序变成了成绩、学号、姓名。


奇怪啊,谁指导一下??
2006-03-16 11:10
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

楼上的问题不可调和啊,系统默认导入后的数据必须按excel表的第一行的字段名称来排列顺序

无论用企业管理器自带的还是用SQL语句导入都必须按顺序创建表的字段


没办法了,看来只有写代码逐行逐行读入……

2006-03-16 11:35
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

顺便把从SQL Server导出到excel的代码也给出吧

EXEC master..xp_cmdshell 'bcp Library.dbo.live41 out e:\live41.xls -c -q -S"" -U"" -P""'

把Library数据库中的live41表导出到e:\live41.xls文件,其中S后的双引号里面是SQL服务器名,U后是用户ID,P后是密码
如果安装MSSQL时设置为本地连接,且没有加用户名和密码的话,则三个都可以留空



例如 SQL服务器名是LEE,用户名是sa,密码是123456 :

EXEC master..xp_cmdshell 'bcp Library.dbo.live41 out e:\live41.xls -c -q -S"LEE" -U"sa" -P"123456"'


[此贴子已经被作者于2006-3-16 11:42:31编辑过]

2006-03-16 11:38
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

SqlConnection sqlConnection1 = new SqlConnection();
sqlConnection1.ConnectionString = "server=(local);integrated security=SSPI;initial catalog=Library";

//import excel into SQL Server 2000
string importSQL = "SELECT * into live41 FROM OpenDataSource" +
"('Microsoft.Jet.OLEDB.4.0','Data Source=" + "\"" + "E:\\022n.xls" + "\"" +
"; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet1$]";

//export SQL Server 2000 into excel
string exportSQL = "EXEC master..xp_cmdshell " +
"'bcp Library.dbo.live41 out E:\\live41.xls -c -q -S" + "\"" + "\"" +
" -U" + "\"" + "\"" + " -P" + "\"" + "\"" + "\'";

try
{
sqlConnection1.Open();

SqlCommand sqlCommand1 = new SqlCommand();
SqlCommand sqlCommand2 = new SqlCommand();

sqlCommand1.Connection = sqlConnection1;
sqlCommand2.Connection = sqlConnection1;

sqlCommand1.CommandText = importSQL;
sqlCommand2.CommandText = exportSQL;

sqlCommand1.ExecuteNonQuery();
sqlCommand2.ExecuteNonQuery();

MessageBox.Show("import/export finish!");

}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}


if(sqlConnection1!=null)
{
sqlConnection1.Close();
sqlConnection1 = null;
}

2006-03-16 12:06
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
收藏
得分:0 
算你狠昂!live41

觉得为时已晚的时候,恰恰是最早的时候。

2006-03-16 12:32
快速回复:Excel与MSSQL互导的SQL语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017569 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved