你双击dbf是什么程序打开的?vfp吗?
你可以使用set printer to file abcsql
list to print
然后使用一个文本编辑器,如emeditor,编辑这个abcsql,将内容构造为标准的sql语句:
insert into mytable (a,b,c,d,e) values ('dbf_field1','dbf_field2','dbf_field3','dbf_field4','dbf_field5')
然后在mysql administrtor中,将这个abcsql导入到数据库中就可以了。
public static DataSet GetDataSet(string FilePath)
{
string OledbConnectionString = stringFormat("Provider=MicrosoftJetOLEDB40;Data Source='" + FilePath + "';Extended Properties='Excel 80;HDR=Yes;IMEX=1'");
OleDbConnection conn = new OleDbConnection(OledbConnectionString);
ArrayList SheetNameList = new ArrayList();
try
{
if (connState == ConnectionStateClosed)
{
connOpen();
}
DataTable dtExcelSchema = connGetOleDbSchemaTable(OleDbSchemaGuidTables, new object[] { null, null, null, "TABLE" });
string SheetName = "";
for (int i = 0; i < dtExcelSchemaRowsCount; i++)
{
SheetName = dtExcelSchemaRows[i]["TABLE_NAME"]ToString();
SheetNameListAdd(SheetName);
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
connClose();
}
DataSet dsExcel = new DataSet(); try
{
string strSql = ""; for (int i = 0; i < SheetNameListCount; i++)
{
strSql = "select from [" + (string)SheetNameList[i] + "]";
OleDbDataAdapter oleExcelDataAdapter = new OleDbDataAdapter(strSql, conn);
DataTable dtExcel = new DataTable((string)SheetNameList[i]);
oleExcelDataAdapterFill(dtExcel);
dsExcelTablesAdd(dtExcel);
}
return dsExcel;
}
catch (Exception ex)
{
throw ex;
}
}这个方法就是从EXCEL文件读取数据转换为DataSet 下面一段时调用的时候要注意的,写要在服务器端保存一下上传的EXCEL,然后再调用 string filePath = "";
DataSet ds = new DataSet();
if (SystemIOPathGetExtension(FileUpload1FileName) != "xls")
{
ClientScriptRegisterStartupScript(PageGetType(), "", "<script>alter('hao')</script>");
return;
}
else
{
filePath = "D:\\" + FileUpload1FileName;
FileUpload1SaveAs(filePath);
string fileName = FileUpload1FileName;
int start = fileNameIndexOf('');
fileName = fileNameSubstring(0, start);
ds = GetDataSet(filePath);
}
mysql的项目,需要设计一个快速上载的机制
最后的解决办法是利用了mysql的预处理语句的特性实现的
mysql的预处理语句支持多行数据的预处理,即insertinto(columnName,columnName,)values(,,)(,,)
这样你在绑定输入参数的时候可以在程序里将整张表的数据都绑定好然后调用一次执行就能将整张表的数据插入,比用mysql_query一行一行插入省的几倍的时间
不过你一次发到mysql服务器端的数据多的情况下,要设置my
ini文件下的一个配置项,把服务器允许一次发送的数据包的大小调大就行
aspnet/c#代码实现excel to mssql数据导入
2008年12月17日 星期三 13:42
做网站项目时,可能会遇到将excel文件中的数据导入至sql server数据库的需求,把excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连接的sql server数据库即可,技术上没有什么难度。
但是需要考虑的一个问题是,系统安装的环境一般是专用sql server服务器+web服务器+客户端,而excel文件往往在客户端导入,如果直接使用sql语句读取的话,由于sql在web服务器上运行,不能读取到客户端的excel地址,就会出错了。
既然知道了错误的原因,解决方案也就有了:
1、把客户端的excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;
2、使用OleDb+sql语句读取web服务器上的excel文件
3、将读取的数据写入到sql server 数据库
4、将web服务器上的临时excel删除
部分代码如下:
string filename = FileUpload1PostedFileFileNameSubstring(FileUpload1PostedFileFileNameLastIndexOf("\\"));
FileUpload1PostedFileSaveAs(ServerMapPath("fileupload\\") + filename);//上传文件
string conn = "Provider=MicrosoftJetOLEDB40;Data Source=" + ServerMapPath("fileupload\\") + filename + ";Extended Properties=Excel 80";
string sqlin = "SELECT FROM [Sheet2$]";
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterinFill(dsin);
DataTable dtin = dsinTables[0];//连接并读取excel数据
for (i = 3; i <= totalrow; i++)//将Excel文件中第一个工作表的数据导入到sql数据库scjd_youliaoxiaohaojihua表中
{
string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";
int j;
sql += DropDownList1SelectedValueToString() + DropDownList3SelectedValueToString();
if (DropDownList1SelectedValueToString() != DateTimeNowYearToString() || intParse(DateTimeNowMonthToString()) != intParse(DropDownList3SelectedValueToString()))
{
sql += "20";
}
else
{
if (intParse(DateTimeNowDayToString()) < 10)
sql += "0";
sql += DateTimeNowDayToString();
}
if (i-3 + count < 9)
sql += "00";
else if (i-3 + count < 99)
sql += "0";
sql += (i -3 + 1 + count)ToString();
sql += "','";
for (j = 1; j < 8; j++)
{//遍历Excel表中一行的所有列,除最后一列
sql += dtinRows[i][j]ToString()Trim();
sql += "','";
}
sql += dtinRows[i][8]ToString()Trim();
sql += "')";
try
{
DoSql(sql);
}
catch (Exception eeeeeee)
{
ResponseWrite("<script>alert('数据导入错误,请检查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(ServerMapPath("fileupload/") + filename);
if (fileExists)
{//删除文件
fileDelete();
}
protected void DoSql(string sql)//执行sql语句的函数
{
SqlConnection conn = new SqlConnection();//创建连接对象
connConnectionString = ConfigurationManagerAppSettings["conn"]ToString();//给连接字符串赋值
connOpen();//打开数据库
SqlCommand cmd = new SqlCommand(sql, conn);
cmdExecuteNonQuery();//
connClose();//关闭数据库
}
注:
1、本文代码均取自我最近刚做的一个小项目,部分数据有较强针对性,并不通用,只有思路通用
2、由于能力和水平问题,部分代码显得有些笨拙,若能灵活运用存储过程,应能大幅度简化代码 只要你的文件能够用记事本打开并格式正确,就可以把他认为是文本文件进行处理
象这种格式的数据没有什么太好的办法,只有从文本文件中逐行读取解析,当读到完整的记录时执行SQL语句插入到数据库中
在查询分析器里,直接写 SQL语句:
如果是导入数据到现有表,则采用形式
INSERT INTO 表 SELECT FROM OPENROWSET('MICROSOFTJETOLEDB40' ,'Excel 50;HDR=YES;DATABASE=c:\testxls',sheet1$)
如果是导入数据并新增表,则采用形式
SELECT INTO 表 FROM OPENROWSET('MICROSOFTJETOLEDB40' ,'Excel 50;HDR=YES;DATABASE=c:\testxls',sheet1$)
SQL2005中直接可以实现导入功能 SQL2008不知道可不可以。 *** 作过程如下:
第一步:登录到 SQL Server Management Studio
第二步:在 “对象资源管理器 ”中右键单击 “管理 ”,在d出列表中单击 “导入数据 ”
第三步:在 “导入向导 ”对话框中单击 “下一步 ”,进入到 “选择数据源 ”对话框,在 “数据源 ”列表中选择 “Microsoft Excel ”,同时选择相应的 Excel 文档,完成后单击 “下一步 ”(一定要勾选该对话框中的 “首行包含列名称 ”,因此它是将 Excel文档中的列标题为数据库表中的列项标题)
第四步:指定目标数据库服务,依次单击 “下一步 ”。。。。至到 “完成 ”
第五步:重新打到 SQL Server Management Studio,进入到导入的数据库表,可以发现所导入的 Excel文档数据。
以上就是关于怎么往mysql数据库的表中批量导入数据全部的内容,包括:怎么往mysql数据库的表中批量导入数据、C#Excel导入多条数据到数据库,如何快速导入、大批量插入数据,mysql批量更新与插入多种(数据库批量更新大量数据)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)