最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

将DBF文件导入Sqlserver数据库_MySQL

来源:动视网 责编:小采 时间:2020-11-09 20:10:33
文档

将DBF文件导入Sqlserver数据库_MySQL

将DBF文件导入Sqlserver数据库_MySQL:项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表。 解决方法(摘抄自网络): --方法一: select * into 要生成的SQL表名 from OPENROWSE
推荐度:
导读将DBF文件导入Sqlserver数据库_MySQL:项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表。 解决方法(摘抄自网络): --方法一: select * into 要生成的SQL表名 from OPENROWSE


项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表。

解决方法(摘抄自网络):

--方法一:

select * into 要生成的SQL表名 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IV;HDR=NO;IMEX=2;DATABASE=c:/','select * from dbf表名.dbf')

--方法二:

select * into 要生成的SQL表名 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase III;HDR=NO;IMEX=2;DATABASE=c:/','select * from dbf表名.dbf')

--方法三:

select * into 要生成的SQL表名 from openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:/','select * from dbf表名.DBF')

--用前两种方法导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方法导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

--第三种方法有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

可以直接将dbf文件导入sqlserver数据库,也可以先将dbf文件导入dataset,再将dataset的数据导入数据库。dbf文件导入dataset的具体实现方法如下:

需要引入system.data.Odbc包

 public DataSet importDbfToDataSet(string FilePath, string tabname)
 {
 string strConnection = @"Dsn=Visual FoxPro Tables;
 sourcedb=" + FilePath.Substring(0, FilePath.LastIndexOf("//")) + ";
 sourcetype=DBF;exclusive=No;backgroundfetch=Yes;collate=Machine";

 //对于连接串,注意版本问题

 string strSelect = "SELECT * FROM " + tabname;
 OdbcConnection thisConnection = new OdbcConnection(strConnection);
 thisConnection.Open();
 OdbcDataAdapter thisAdapter = new OdbcDataAdapter(strSelect, thisConnection);
 DataSet thisDataSet = new DataSet();
 try
 {
 thisAdapter.Fill(thisDataSet);
 }
 catch (Exception e)
 {
 throw e;
 }
 finally
 {
 thisConnection.Close();
 }
 return thisDataSet;
 }

下面的程序通过Timer定时器,设置定时将本地dbf文件直接存入数据库表,该dbf文件会定时被覆盖掉。

 class Connect
 {
 //定义连接字符串,连接对象,命令对象
 private String connectionstr;
 private SqlConnection connection;
 private SqlCommand command;
 private DataSet dataset; 
 public Connect()
 {
 connectionstr = "Server=192.168.88.59;Initial 
 Catalog=Test; User 
 ID=sa;Password=sasa;";
 connection = new SqlConnection(connectionstr);
 dataset = new DataSet(); 
 command = connection.CreateCommand();
 connection.Open();
 }
 public void CreateTimer()
 {
 Timer timer = new Timer();
 timer.Enabled = true;
 timer.Interval = 60 * 1000;//设置一分钟
 timer.Elapsed+=new ElapsedEventHandler(timer_Elapsed);
 }
 void timer_Elapsed(object sender, ElapsedEventArgs e)
 {
 Connect c = new Connect();
 int minute = e.SignalTime.Minute;
 int iminute = 5;
 if(minute==iminute)//设置每个小时的第五分钟执行
 c.Insert();
 }
 private void Insert()
 {
 //string filepath = "C;//";
 //将dbf文件导入指定数据库的表
 string creattb = 
 "select * into tablename from OPENROWSET('MSDASQL','driver=Microsoft visual 
 foxpro driver; sourcedb=c://;SourceType=DBF','select * from RSZ1031.dbf')";
 SqlCommand mycommand = new SqlCommand(creattb, connection);
 mycommand.ExecuteNonQuery();
 }
 }

1.无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "msdasql" 的数据源对象”;

原因是安装sql2005数据库的系统中没有 VFPODBC驱动,到http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx下载并安装

2.SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问;

原因是因为“功能的外围应用配置器”中没有“启用openrowset和opendatasource支持”,只需要打开“功能的外围应用配置器”设置一下就可以。

文档

将DBF文件导入Sqlserver数据库_MySQL

将DBF文件导入Sqlserver数据库_MySQL:项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表。 解决方法(摘抄自网络): --方法一: select * into 要生成的SQL表名 from OPENROWSE
推荐度:
标签: 导入 数据库 sql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top