星空网 > 软件开发 > 数据库

将DBF文件导入Sqlserver数据库

项目中的问题:用户选择N个dbf文件导入sql2005数据库,由于每年dbf表结构都在变化,所以在sql2005中根本就不存在,需要每年根据dbf的结构自动建表。(文章来自http://blog.csdn.net/whuyi/article/details/5990205)

 

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

 

     --方法一:

         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表导入Server.aspx' >SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

 

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

需要引入system.data.Odbc包

将DBF文件导入Sqlserver数据库将DBF文件导入Sqlserver数据库
 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;    }

View Code

下面的程序通过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数据库

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

出海品牌营销干货!超详细!从新品到爆品,如何在预热期打响第一枪?:https://www.kjdsnews.com/a/1427827.html
WhatsApp直接翻译?WhatsApp翻译插件有话说!:https://www.kjdsnews.com/a/1427828.html
大清洗!俄罗斯电商平台Joom将关闭非活性及低效账号:https://www.kjdsnews.com/a/1427829.html
俄罗斯OZON平台广告功能最新调整优化:https://www.kjdsnews.com/a/1427830.html
Facebook企业广告账户-如何做好Facebook海外营销?:https://www.kjdsnews.com/a/1427831.html
网站建设外贸(外贸企业如何建站):https://www.kjdsnews.com/a/1427832.html
北京奥森公园桃花谷要门票吗?需要预约吗?:https://www.vstour.cn/a/335169.html
北京奥森公园桃花谷坐地铁怎么走?:https://www.vstour.cn/a/335170.html
相关文章
我的浏览记录
最新相关资讯
跨境电商服务平台 | 深圳旅行社 | 东南亚物流