【问题标题】:How to convert query from phpMyAdmin SQL Dump to an sql server legible query如何将查询从 phpMyAdmin SQL Dump 转换为 sql server 易读查询
【发布时间】:2011-03-16 12:33:05
【问题描述】:

我已经进行了一个小项目,该项目已经发展了一个当前的数据库。应用程序是用php编写的,数据库是mysql。

我正在重写应用程序,但我仍然需要维护数据库的结构和数据。我收到了一个 sql 转储文件。当我尝试在 sql server management studio 中运行它时,我收到很多错误。我想知道有什么办法可以将 sql 脚本从创建的 phpMyAdmin 转储文件转换为 tsql?

有什么想法吗?

【问题讨论】:

    标签: php sql sql-server tsql phpmyadmin


    【解决方案1】:

    phpMyAdmin 是 MySQL 数据库的前端。转储数据库可以有多种格式,包括SQL脚本代码,但我猜你的问题是你用的是SQL Server,T-SQL和MySQL不一样。

    编辑:我看到原始发帖人意识到了这一点(帖子上没有 MySQL 标签)。我的建议是以 CSV 格式重新转储数据库(例如)并通过批量插入导入,例如,对于单个表,

    CREATE TABLE MySQLData [...]
    
    BULK
    INSERT MySQLData
    FROM 'c:\mysqldata.txt'
    WITH
    (
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
    )
    GO
    

    如果数据库不是太大并且只有几个表,这应该可以正常工作。

    顺便说一句,你确实有比让脚本运行更多的问题:数据类型的映射绝对不容易。

    这是通过 DTS 导入/导出向导提供的 article about migration MySQL -> SQL Server,如果您的数据库很大(并且您仍然可以访问,即不仅有转储),这可能是一个好方法。

    【讨论】:

      【解决方案2】:

      Tsql 和 Mysql 之间的语法相距一百万英里,你可以通过反复试验和一系列查找和替换来重写它。

      更好的选择可能是安装 mysql 和 mysqlconnector,并使用 dubp 文件恢复数据库。

      然后您可以在 SQL 服务器上创建一个链接服务器并执行如下一系列查询:

      SELECT * 
      INTO SQLTableName
      FROM OPENQUERY
      (LinkedServerName, 'SELECT * FROM  MySqlTableName') 
      

      【讨论】:

      • 有趣的想法,手动解决所有错误是不可能的。数据库太大
      【解决方案3】:

      MySQL 的mysqldump 实用程序可以为其他系统生成一些兼容的转储。例如,使用--compatible=mssql。此选项不保证与其他服务器的兼容性,但可以防止大多数错误,让您手动更改的内容更少。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-29
        • 2016-07-29
        • 2020-03-06
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多