> 데이터 베이스 > MySQL 튜토리얼 > 将DBF文件导入Sqlserver数据库_MySQL

将DBF文件导入Sqlserver数据库_MySQL

PHP中文网
풀어 주다: 2016-05-27 19:11:42
원래의
2167명이 탐색했습니다.

项目中的问题:用户选择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包


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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文件会定时被覆盖掉。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

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的内容,更多相关内容请关注PHP中文网(www.php.cn)!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿