My Sql数据库数据导进SQL Server数据库

zfwjh 2009-02-19 09:41:53
我原来用的是DTS直接导入,但每导一次都只能导一个表,
并且系统不能自动生成,还得自己写导入的代码,导入后还需要改表名。
比较麻烦。
现在我有比较多的MySql数据库,想批量的导入SqlServer数据库。
在Sql Server里有没有什么命令可以批量执行的?
...全文
147 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfwjh 2009-02-24
  • 打赏
  • 举报
回复
手动处理了。
结了。
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zfwjh 的回复:]
1的没问题,

2有个不明白的地方,
@server = 'MySQLTest'

@rmtsrvname='MySqlTest'

这两个各代表什么意思?
[/Quote]

1.建立ODBC数据源.

ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

ODBC是Open Database Connectivity的缩写,是MICROSOFT提出的数据库访问接口标准。ODBC定义了访问数据库的API一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言(但是MICROSOFT的ODBC文档是用C语言描述的,许多实际的ODBC驱动程序也是用C语言写就的。)ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分,具体内容可以参看《ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)》等相关的标准文件。

ODBC现在看来是一个比较古老的东西,在1996年左右就比较定型了,其最新的版本是3.52,MICROSOFT也不打算对它做什么大的更新,更多的目光应该被放到OLEDB、.NET DATA PROVIDER身上了。然而,正因为它是一个比较成熟和古老的规范,ODBC在大多数DBMS上都做可以使用,可以说一个像样的DBMS都应该支持ODBC 3.0或以上的版本。

如果你打算学习基于ODBC API的应用开发,最好的参考资料是MSDN。如果你打算学习如何开发一个ODBC DRIVER,最好的参考资料还是MSDN。如果你不打算采用ODBC API做开发,学习和了解ODBC也可以增加对DBMS的了解,也能更好地理解其他的数据库访问接口和技术。


一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

开放数据库互连(ODBC)是Microsoft引进的一种早期数据库接口技术。它实际上是我们要在本章后面加以讨论的ADO的前身。Microsoft引进这种技术的一个主要原因是,以非语言专用的方式,提供给程序员一种访问数据库内容的简单方法。换句话说,访问DBF文件或Access Basic以得到MDB文件中的数据时,无需懂得Xbase程序设计语言。事实上,Visual C++就是这样一个程序设计平台,即Microsoft最初是以ODBC为目标的。

你会发现,ODBC工作起来和Windows一样枣它用包含在DLL内的驱动程序完成任务。其实,ODBC提供一套两个驱动程序:一个是数据库管理器的语言,另一个为程序设计语言提供公用接口。允许Visual C++用标准的函数调用经公用接口访问数据库的内容,是这两个驱动程序的汇合点。当然,还有其它和ODBC有关的实用程序类型的DLL。例如,一个这样的DLL允许你管理ODBC数据源。ODBC的实际管理接口出现在SYSTEM文件夹中的某个CPL(控制面板)文件中枣我们在后面要谈到这方面的问题。

ODBC的确能履行承诺,提供对数据库内容的访问,并且没有太多的问题。它没有提供数据库管理器和C之间尽可能最好的数据转换,这种情况是有的,但它多半能像广告所说的那样去工作。唯一影响ODBC前程的是,它的速度极低枣至少较早版本的产品是这样。ODBC最初面世时,一些开发者曾说,因为速度问题,ODBC永远也不会在数据库领域产生太大的影响。然而,以Microsoft的市场影响力,ODBC毫无疑问是成功了。今天,只要有两种ODBC驱动程序的一种,那么几乎每一个数据库管理器的表现都会很卓越。


2有个不明白的地方,
@server = 'MySQLTest'
服务器名

@rmtsrvname='MySqlTest'

数据库名或驱动名.
zfwjh 2009-02-19
  • 打赏
  • 举报
回复
1的没问题,

2有个不明白的地方,
@server = 'MySQLTest'

@rmtsrvname='MySqlTest'

这两个各代表什么意思?
claro 2009-02-19
  • 打赏
  • 举报
回复
帮顶。
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zfwjh 的回复:]
对,My Sql是多个库的内容。

每个My Sql 库导进SQL Server 都成为一个表.

这点明白。

我现在就想能不能写个代码,批量的把MySQl库导到Sql Server库中,
并且生成指定的表名。
[/Quote]

参考下面的内容.

--连接mysql

安装MySQL的ODBC驱动MyODBC

1、为MySQL建立一个ODBC系统数据源,例如:选择数据库为test ,数据源名称为 myDSN

2、建立链接数据库
EXEC sp_addlinkedserver @server = 'MySQLTest', @srvproduct='MySQL', @provider = 'MSDASQL', @datasrc = 'myDSN'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mysql的用户名',@rmtpassword='mysql的密码'

3、查询数据

SELECT * FROM OPENQUERY (MySQLTest ,'select * from 表' )

4.利用mysql数据生成新表

SELECT * into newtb FROM OPENQUERY (MySQLTest ,'select * from tb' )

--来源网络
zfwjh 2009-02-19
  • 打赏
  • 举报
回复
对,My Sql是多个库的内容。

每个My Sql 库导进SQL Server 都成为一个表.

这点明白。

我现在就想能不能写个代码,批量的把MySQl库导到Sql Server库中,
并且生成指定的表名。
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
每次可以导多个表,导的时候选择表即可.
[/Quote]

每次可以导多个表,导的时候选择表即可.导的时候可以改表名.

不过每次只能导入一个库的内容,不能同时导两个库的内容.
dawugui 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 zfwjh 的帖子:]
我原来用的是DTS直接导入,但每导一次都只能导一个表,
并且系统不能自动生成,还得自己写导入的代码,导入后还需要改表名。
比较麻烦。
现在我有比较多的MySql数据库,想批量的导入SqlServer数据库。
在Sql Server里有没有什么命令可以批量执行的?
[/Quote]

每次可以导多个表,导的时候选择表即可.
水族杰纶 2009-02-19
  • 打赏
  • 举报
回复
MYSQL -->MSSQL
幫頂~~~
zfwjh 2009-02-19
  • 打赏
  • 举报
回复
靠,才发现,一个数据源只能针对一个数据库。
晕了,看来是不行了。只能手动了?????

有没有SQL代码可以实现动态的配数据源?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧