小弟正在做EXCEL导入数据库
可在数据转换的时候卡住了
问题是这样的
XLS文件里有4行数据
第一行是字符 第二行是数字 第三行也是字符 第四行也是字符
在数据库里对应的是第一个varchar第二个numeric 第三个datetime第四varchar
我现在一导入就说数据类型不正确
那为大哥能贴一个EXCEL导入MSSQL数据库的实例给我啊!~
小弟谢谢啦
急啊!~
问题解决马上给分!insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
select*from openrowset('MicroSoft.Jet.OleDB.4.0','Excel5.0;HDR=yes;Database=f:\aa.xls','select*from[sheet1$]')
这里的SQLOLEDB是什么意思啊?数据库连接语句吗
望达人指教啊
可在数据转换的时候卡住了
问题是这样的
XLS文件里有4行数据
第一行是字符 第二行是数字 第三行也是字符 第四行也是字符
在数据库里对应的是第一个varchar第二个numeric 第三个datetime第四varchar
我现在一导入就说数据类型不正确
那为大哥能贴一个EXCEL导入MSSQL数据库的实例给我啊!~
小弟谢谢啦
急啊!~
问题解决马上给分!insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
select*from openrowset('MicroSoft.Jet.OleDB.4.0','Excel5.0;HDR=yes;Database=f:\aa.xls','select*from[sheet1$]')
这里的SQLOLEDB是什么意思啊?数据库连接语句吗
望达人指教啊
但是不能去判断数据类型啊!~
我把DATASET转换成了一条条的insert语句就是数据类型不知道怎么转
EXCEL里的数字取到DATESET里就变成字符串了
convert(datetime,要转换的字段名)
insert [ODBC;Driver=SQL Server;Server=SQL服务器名;Uid=用户名;Pwd=密码;database=数据库名].接受数据导入的表名(字段列表)
SELECT 导入的字段列表
FROM [Excel 5.0;HDR=NO;DATABASE=c:\test.xls].[sheet1$]
这里的ODBC是常量吗/
如果我是SqlClient
是不是应该写
insert [SqlClient;Driver=SQL Server;Server=SQL服务器名
啊
数据库也没更新.
public static string rianstring(string fileName)
{
string tableName = string.Empty;
if (File.Exists(fileName))
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + fileName);
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
tableName = dt.Rows[0][2].ToString().Trim();
}
}
return tableName;
} public DataSet UpdateByDataSet(DataSet ds, string str_tableName, string str_conn)
{
SqlConnection conn = new SqlConnection(str_conn);
SqlCommand mycmd = new SqlCommand("select * from " + str_tableName, conn);
SqlDataAdapter myda = new SqlDataAdapter(mycmd);
SqlCommandBuilder myder = new SqlCommandBuilder(myda);
myda.InsertCommand = myder.GetInsertCommand();
//myda.UpdateCommand = myder.GetUpdateCommand();
//try
//{
lock (this)
{
conn.Open();
myda.Update(ds, str_tableName);
conn.Close();
}
return ds;
//}
//catch (Exception)
//{
// conn.Close();
// throw;
//}
}//取得XLS文件第一张表名
public static string rianstring(string fileName)
{
string tableName = string.Empty;
if (File.Exists(fileName))
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + fileName);
{
conn.Open();
DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
tableName = dt.Rows[0][2].ToString().Trim();
}
}
return tableName;
}调用
UpdateByDataSet(RainSet(FileUpload1.PostedFile.FileName), "a", System.Configuration.ConfigurationManager.ConnectionStrings["xxxxConnectionString"].ToString());
楼主请参考~谢谢~~~吃饭先了
楼主的4列全部设置为"常规" 就可以了 BCP入库的时候不会出错 EXCEL2003的编辑器没用过 不了解 LZ试试
再就是看看你的ds中数据个数是不是0,要是0的话就是没有读取EXCEL的数据,要是读到了你就用事件探察器看看是不是执行了SQL,最后一句拉出去(到查询分析器中)跑一下看看
SQL SERVER事件探察器怎么看呀?