Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将表从MS SQL Server迁移到MySQL_Mysql_Sql Server_Migrate - Fatal编程技术网

将表从MS SQL Server迁移到MySQL

将表从MS SQL Server迁移到MySQL,mysql,sql-server,migrate,Mysql,Sql Server,Migrate,我必须将一个表从MSSQL服务器迁移到MySql。问题是这个表相当大(6500万条记录),整个过程花费了太多时间。有人知道如何加快速度吗?任何有用的工具都可以改善这一点吗?只需要做一次吗?不要浪费太多时间进行优化,等到优化完成再继续 需要经常做吗?然后详细说明您当前使用的工具/技术会有所帮助。您可以将数据导出为文本,然后使用mysql load语句: 将数据本地填充'/somefolder/text\u file\u和

我必须将一个表从MSSQL服务器迁移到MySql。问题是这个表相当大(6500万条记录),整个过程花费了太多时间。有人知道如何加快速度吗?任何有用的工具都可以改善这一点吗?

只需要做一次吗?不要浪费太多时间进行优化,等到优化完成再继续


需要经常做吗?然后详细说明您当前使用的工具/技术会有所帮助。

您可以将数据导出为文本,然后使用mysql load语句:

将数据本地填充
'/somefolder/text\u file\u和
加载到表中,一些表字段以
'\t'
行结尾,行以
'\n'

或者,如果将数据文件放在mysql服务器上,则可以:

将mysql服务器/文本文件上的数据填充
'/somefolder\u,并使用
加载到表中,一些表字段以
'\t'
行结尾,行以
'\n'

我不确定mssql的语法是什么


您始终可以导出10000或100000个数据集。

确保mysql表最初没有索引;加载完成后添加它们。

在开始插入之前,在my.ini文件中使用以下语句,确保MySQL表存储文件足够大:

innodb_data_file_path=ibdata1:1000M:autoextend

如果您可以使用可以使用SQL Server的导入/导出向导生成的SSIS/DTS包从mssql获取数据并将其导入mysql,请尝试。(使用适当的OLEDB/ADO提供程序连接到MySQL


周五回家时启动它,周末后再检查;)

确保没有列有索引,并删除任何外键(如果您使用InnoDB作为表类型)以进行导入。

以下是我如何将800K记录表从MS Sql Server迁移到MySQL的

创建查询以表格格式显示数据:

SELECT [PostalCode] + ' ' +
  [StateCode] + '   ' +
  [Latitude] + '    ' +
  [Longitude] + '   ' +
  [CityName]  
FROM [dbo].[PostalCode]
使用SQL Server Management Studio执行查询,并选择将结果输出到文件中(菜单:查询->结果到->结果到文件)

文件名必须是MySQL中表的名称。文件扩展名不重要

然后使用mysqlimport.exe(在Windows上)导入数据(该表必须存在于MySQL数据库中):

导入后,我必须删除表的最后2条记录,因为文件末尾包含一些垃圾:(818193行受影响)

对于800K来说,它相当快:10秒导出,然后10秒导入

希望这有帮助。

类似的答案:
mysqlimport.exe --user=user_name
  --columns=postalcode,statecode,latitude,longitude,cityname 
  --ignore-lines=2 databaseName pathToFile