我用 EMS Data Pump for MySQL 和 DBConvert for MSSQL & MySQL 都可以将sql2005的表和数据转到 mysql ,但是这两个东东都不能转视图,请问有没有其它的办法可以转视图?或者将Sqlserver2005的视图脚本转成Mysql的都可以

解决方案 »

  1.   

    Sqlserver2005的视图可以转出脚本,但是修改成Mysql格式只能你手动去做
      

  2.   

    to 楼上:如果几十个view,手动改?
      

  3.   

    这个问题可能说不清楚了,各位大大帮忙转个脚本算了,转完就结贴放分了。
    这是2005生成的脚本,麻烦转成MysqlCREATE VIEW [dbo].[OrderListView]
    AS
    SELECT     n.ContentText AS CommentText, m.OrderId, m.CustomerId, m.Photos, m.OriginalSize, m.PhotoBefore, m.PhotoAfter, m.PhotoSlightly, m.PhotoTitle, 
                          m.Description, m.StatusId, m.AddTime, n.OrderCommentsId, o.StatusTitle, n.AddTime AS CommentTime, p.UserName
    FROM         dbo.CustomerOrders AS m LEFT OUTER JOIN
                              (SELECT     OrderCommentsId, OrderId, UserId, ContentText, AddTime
                                FROM          dbo.OrderComments AS t
                                WHERE      (OrderCommentsId =
                                                           (SELECT     MAX(OrderCommentsId) AS Expr1
                                                             FROM          dbo.OrderComments
                                                             WHERE      (OrderId = t.OrderId)))) AS n ON m.OrderId = n.OrderId LEFT OUTER JOIN
                          dbo.OrderStatus AS o ON o.OrderStatusId = m.StatusId LEFT OUTER JOIN
                          dbo.aspnet_Users AS p ON p.UserId = m.CustomerId
      

  4.   

    你先在MYSQL中试试能不能创建这个视图?????
    语法不太懂,等梁哥,树哥
      

  5.   

    创建mysql视图前.应先看一下MySql视图的限制.
      

  6.   

    视图定义服从下述限制:·         SELECT语句不能包含FROM子句中的子查询。·         SELECT语句不能引用系统或用户变量。·         SELECT语句不能引用预处理语句参数。·         在存储子程序内,定义不能引用子程序参数或局部变量。·         在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。·         在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。·         在视图定义中命名的表必须已存在。·         不能将触发程序与视图关联在一起。
      

  7.   

    CREATE VIEW v_OrderCommentsMaxId
    AS
        SELECT OrderId,MAX(OrderCommnetsId) AS Expr1
        FROM OrderComments
        GROUP BY OrderId;
    CREATE VIEW v_OrderCommentsJoin
    AS
        SELECT oc.OrderCommentsId,oc.OrderId,
             oc.UserId,oc.ContentText,oc.AddTime
        FROM OrderComments AS oc
           JOIN v_OrderCommentsMaxId AS ocm
        ON oc.OrderId = ocm.OrderId
            AND ocm.Exprl = oc.OrderCommentsId;
    CREATE VIEW v_OrderListView
    AS
        SELECT
        FROM CustomerOrders AS m
            LEFT JOIN v_OrderCommentJoin AS ocj
        ON m.OrderId = ocj.OrderId
            LEFT JOIN OrderStatus AS o
        ON o.OrderStatusId = m.StatusId
            LEFT JOIN aspnet_Users AS p
        ON p.UserId = m.CostomerId;-----------然后查v_OrderListView
      

  8.   

    CREATE VIEW [dbo].[OrderListView] 
    AS 
    SELECT    n.ContentText AS CommentText, m.OrderId, m.CustomerId, m.Photos, m.OriginalSize, m.PhotoBefore, m.PhotoAfter, m.PhotoSlightly, m.PhotoTitle, 
                          m.Description, m.StatusId, m.AddTime, n.OrderCommentsId, o.StatusTitle, n.AddTime AS CommentTime, p.UserName 
    FROM        dbo.CustomerOrders AS m LEFT OUTER JOIN 
                              (SELECT    OrderCommentsId, OrderId, UserId, ContentText, AddTime 
                                FROM          dbo.OrderComments AS t 
                                WHERE      (OrderCommentsId = 
                                                          (SELECT    MAX(OrderCommentsId) AS Expr1 
                                                            FROM          dbo.OrderComments 
                                                            WHERE      (OrderId = t.OrderId)))) AS n ON m.OrderId = n.OrderId LEFT OUTER JOIN 
                          dbo.OrderStatus AS o ON o.OrderStatusId = m.StatusId LEFT OUTER JOIN 
                          dbo.aspnet_Users AS p ON p.UserId = m.CustomerId语法应该都是一样的!在mysql front上试试先
      

  9.   

    多谢梁哥,我对mysql语法不熟,前面两个view中有些小错误,我还是看得出来,已经修复,
    请问第三个view(v_OrderListView)中的ocj,是不是就是我那个sqlserver view 中的 n ?(SELECT    OrderCommentsId, OrderId, UserId, ContentText, AddTime 
                                FROM          dbo.OrderComments AS t 
                                WHERE      (OrderCommentsId = 
                                                          (SELECT    MAX(OrderCommentsId) AS Expr1 
                                                            FROM          dbo.OrderComments 
                                                            WHERE      (OrderId = t.OrderId)))) AS n
      

  10.   

    查 v_orderlistview 的最后语句是不是这样:
    CREATE VIEW OrderListView
    AS
        SELECT
        m.OrderId,
        m.CustomerId,
        m.Photos,
        m.OriginalSize,
        m.PhotoBefore,
        m.PhotoAfter,
        m.PhotoSlightly,
        m.PhotoTitle,
        m.Description,
        m.StatusId,
        m.AddTime,
        n.ContentText AS CommentText,
        n.OrderCommentsId,
        n.AddTime AS CommentTime,
        o.StatusTitle,
        p.Name    FROM
        CustomerOrders
        AS m
          LEFT JOIN
          v_OrderCommentsJoin
          AS n
        ON
        m.OrderId = n.OrderId
            LEFT JOIN OrderStatus AS o
        ON o.OrderStatusId = m.StatusId
            LEFT JOIN my_aspnet_Users AS p
        ON p.Id = m.CustomerId;
      

  11.   

    嗯.mysql的视图限制很多..不像sql server那样..
    所以得一步一步的细化了.