mar*_*den 83 mysql sql-server mysqldump
我有一个来自MySQL转储的.sql文件,其中包含要插入这些表中的表,定义和数据.如何将转储文件中表示的此数据库转换为MS SQL Server数据库?
Zar*_*dan 59
除了MySQL,它还支持Oracle,Sybase和MS Access.
它看起来非常聪明,能够处理非常重要的转移.它还有一些命令行界面(除了GUI),因此从理论上讲它可以集成到一些批量加载过程中.
这是MySQL版本的当前下载链接http://www.microsoft.com/en-us/download/details.aspx?id=42657
当前(2016年6月)稳定版本6.0.1在传输数据时与当前(5.3.6)MySQL ODBC驱动程序崩溃.一切64位.带有5.1.13 ODBC驱动程序的5.3版本可以正常工作.
小智 16
我建议你像这样使用mysqldump:
mysqldump --compatible=mssql
phpMyAdmin仍然是一个Web应用程序,可能对大型数据库有一些限制(脚本执行时间,可分配内存等).
mar*_*den 13
我在网上找到了一种方法
它需要一些工作,因为它必须逐桌完成.但无论如何,我可以将表,数据和约束复制到MS SQL数据库中.
链接在这里
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
这是我将.sql文件导入MS SQL的方法:
从MySQL导出表--compatible=mssql和--extended-insert=FALSE选项:
mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
使用PowerShell将导出的文件拆分为每个文件300000行:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
在MS SQL Server Management Studio中运行每个文件
如何加快插入速度的提示很少.
其他方法是使用mysqldump –where选项.通过使用此选项,您可以在wheresql子句支持的任何条件下拆分表.
如果使用PhpMyAdmin进行导出,则可以将sql兼容模式切换为"MSSQL".这样,您只需针对MS SQL数据库运行导出的脚本即可.
如果你不能或不想使用PhpMyAdmin,mysqldump中也有兼容性选项,但我个人更愿意让PhpMyAdmin为我做.
我今天遇到了一个非常相似的问题 - 我需要将一个大表(5 百万行)从 MySql 复制到 MS SQL 中。
以下是我完成的步骤(在 Ubuntu Linux 下):
在 MS SQL 中创建了一个表,其结构与 MySql 中的源表相匹配。
已安装的 MS SQL 命令行:https : //docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu
将表从 MySql 转储到文件:
mysqldump \
- 袖珍的 \
--完整插入\
--no-create-info \
--compatible=mssql \
--extended-insert=FALSE \
--host "$MYSQL_HOST" \
--user "$MYSQL_USER" \
-p"$MYSQL_PASS" \
“$MYSQL_DB”\
"$TABLE" > "$FILENAME"
在我的情况下,转储文件非常大,所以我决定将它分成许多小块(每个 1000 行)- split --lines=1000 "$FILENAME" part-
最后,我遍历了这些小文件,进行了一些文本替换,并针对 MS SQL 服务器逐个执行了这些片段:
导出 SQLCMD=/opt/mssql-tools/bin/sqlcmd x=0 对于文件中的部分-* 做 echo "正在将文件 [$file] 导出到 MS SQL。已处理 $x 千" # 用 '' 替换 \' sed -i "s/\\\'/''/g" "$file" # 删除所有 " sed -i 's/"//g' "$file" # 允许插入指定 PK(id) 的记录 sed -i "1s/^/SET IDENTITY_INSERT $TABLE ON;\n/" "$file" "$SQLCMD" -S "$AZURE_SERVER" -d "$AZURE_DB" -U "$AZURE_USER" -P "$AZURE_PASS" -i "$file" 回声“” 回声“” x=$((x+1)) 完毕 回声“完成”
当然,你需要更换喜欢我的变量$AZURE_SERVER,$TABLE用你的,等等。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
223372 次 |
| 最近记录: |