作者 Haidong Ji 翻译 GoodKid 原文Original
从Sql Server移植数据到 MySQL, 当然可以通过相关工具实现,它们可以建立连接,实现数据存储和数据操作,像 Access, Excel,或 SSIS。现在我将介绍一种不需要任何工具和驱动的方法。 对于一个标准的 Sql Server 和 MySQL 安装,我们可以使用这个方法完成这个任务。
使用这个手段,首先假设在MySQL中已经存在匹配 表,否则,要首先创建它们。
实现过程包括的步骤: 首先基于Sql Server 数据库元数据生成bcp(bootstrap command processor ) 命令 (sysobjects, 考虑MySql中的 information_schema);接下来运行生成的 bcp 命令;获得的 csv 文件可以被传输到 MySQL server上,如果尺寸较大可以考虑压缩文件;最终csv 文件将通过LOAD DATA LOCAL INFILE 命令导入到 MySQL 中。
1. 在 Sql Server 上运行下列代码以产生 bcp 命令,根据具体情况修改备份文件夹名称和数据库名称。数据库名称对应 MyDb,两处需要修改。
01.
set nocount on
02.
03.
/* Set BackupFolder name here */
04.
declare @BackupFolder varchar (100)
05.
set @BackupFolder = 'c:\MyDataDumpFolder\'
06.
07.
/* Initialize variables here */
08.
declare @TableNames table (TableTempID
09.
smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, TableName varchar(50))
10.
declare @TableName varchar(50)
11.
declare @BackupFileName char(50)
12.
declare @BackupFolderFile varchar(150)
13.
declare @Counter smallint
14.
declare @MaxTableCount smallint
15.
declare @BCPOutCommand varchar(500)
16.
17.
/* Get the list of tables that we want to dump out as csv */
18.
insert into @TableNames (TableName) select name from
19.
MyDb.dbo.sysobjects where xtype = ' U '
20.
and name not in (' dtproperties ')
21.
22.
select @MaxTableCount = max(TableTempID) from @TableNames
23.
set @Counter = 1
24.
25.
/* Loop through all each table individually, generate bcp
26.
commands and run bcp commands to export data */
27.
while @Counter < = @MaxTableCount
28.
29.
Begin
30.
31.
/* Create backup file name */
32.
select @TableName = ltrim(rtrim(TableName)) from
33.
@TableNames where TableTempID = @Counter
34.
35.
select @BackupFileName = ltrim(rtrim(@TableName)) + ' .txt '
36.
37.
/* Combine backup folder name and file name */
38.
select @BackupFolderFile = @BackupFolder + @BackupFileName
39.
40.
/* Create BCP command */
41.
select @BCPOutCommand = ' bcp ' + ' "MyDb.dbo.' + @TableName +
42.
'" out "' + ltrim(rtrim(@BackupFolderFile)) +
43.
'" -c -q -S ' + @@Servername + ' -T'
44.
45.
print @BCPOutCommand
46.
set @Counter = @Counter + 1
47.
end
2. 在 Windows DOS 命令行运行生成的bcp命令。假设我们只有一个称为t1的表格,bcp 命令看起来如下:
bcp “test.dbo.t1″ out “c:\junk\t1.txt” -c -q -SSqlServerInstanceName -T
3. 收集这些文本 text 文件并且移动它们到MySQL server;
4. 在mysql中运行这命令以实现导入数据,如果需要可以调整目录名称。
mysql> LOAD DATA LOCAL INFILE ‘/home/haidong/Desktop/t1.txt’ INTO TABLE t1 LINES TERMINATED BY ‘\r\n’;
我已经成功测试了一些包含 number,character, datetime, 和 sequence 数据的表。 运气多变,希望对你有所帮助。
更多内容:
To game to creative life
<!-- google_ad_client = "pub-2416224910262877"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "image"; google_ad_channel = ""; // -->
SqlServer至MySQL数据迁移
本文介绍了一种无需工具和驱动的SqlServer至MySQL的数据迁移方法。该方法涉及利用bcp命令导出数据为CSV文件,再通过LOAD DATA LOCAL INFILE命令导入至MySQL。
540

被折叠的 条评论
为什么被折叠?



