本人因为公司要求要将MySQL数据库转成Oracle的数据库
问一下这个语句这么改  或是大家有什么好的工具 那就更好了( 我网上找的用不了)这是我用Navicat绿色软件  将MySQL备份成语句是产生的  这是其中一个表
DROP TABLE IF EXISTS `attachments`;
CREATE TABLE `attachments` (
  `id` int(11) NOT NULL auto_increment,
  `container_id` int(11) NOT NULL default '0',
  `container_type` varchar(30) NOT NULL default '',
  `filename` varchar(255) NOT NULL default '',
  `disk_filename` varchar(255) NOT NULL default '',
  `filesize` int(11) NOT NULL default '0',
  `content_type` varchar(255) default '',
  `digest` varchar(40) NOT NULL default '',
  `downloads` int(11) NOT NULL default '0',
  `author_id` int(11) NOT NULL default '0',
  `created_on` datetime default NULL,
  `description` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `index_attachments_on_container_id_and_container_type` (`container_id`,`container_type`),
  KEY `index_attachments_on_author_id` (`author_id`),
  KEY `index_attachments_on_created_on` (`created_on`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
非常抱歉  分不多了  因本人对MySQL非常不熟 最近才学会用dos下写Mysql语句

解决方案 »

  1.   

    int(11),里面的11没用!
    int表示的是:(-2 147 483 648,2 147 483 647)
    如果 int unsigned 表示的是:(0,4 294 967 295)
    varchar(255)表示的是255位字符,是有效的
      

  2.   


    DROP   TABLE   IF   EXISTS   `attachments`; 
    CREATE   TABLE   `attachments`   ( 
        `id`   int(11)   NOT   NULL   auto_increment, 
        `container_id`   int(11)   NOT   NULL   default   '0 ', 
        `container_type`   varchar(30)   NOT   NULL   default   ' ', 
        `filename`   varchar(255)   NOT   NULL   default   ' ', 
        `disk_filename`   varchar(255)   NOT   NULL   default   ' ', 
        `filesize`   int(11)   NOT   NULL   default   '0 ', 
        `content_type`   varchar(255)   default   ' ', 
        `digest`   varchar(40)   NOT   NULL   default   ' ', 
        `downloads`   int(11)   NOT   NULL   default   '0 ', 
        `author_id`   int(11)   NOT   NULL   default   '0 ', 
        `created_on`   datetime   default   NULL, 
        `description`   varchar(255)   default   NULL, 
        PRIMARY   KEY     (`id`), 
        KEY   `index_attachments_on_container_id_and_container_type`   (`container_id`,`container_type`), 
        KEY   `index_attachments_on_author_id`   (`author_id`), 
        KEY   `index_attachments_on_created_on`   (`created_on`) 
    )   ENGINE=InnoDB   DEFAULT   CHARSET=utf8; 
      

  3.   

    目前没什么好工具,只能是导出记录,然后手工修改SQL脚本,然后到ORACLE中执行。
      

  4.   

    现在我遇到了这个自增序列字段怎么创建的问题
    CREATE   TABLE   `attachments`   ( 
        `id`   int(11)   NOT   NULL   auto_increment
        `container_id`   int(11)   NOT   NULL   default   '0 ', 
        `container_type`   varchar(30)   NOT   NULL   default   ' ', 
        `filename`   varchar(255)   NOT   NULL   default   ' ', 
        `disk_filename`   varchar(255)   NOT   NULL   default   ' ', 
        `filesize`   int(11)   NOT   NULL   default   '0 ', 
        `content_type`   varchar(255)   default   ' ', 
        `digest`   varchar(40)   NOT   NULL   default   ' ', 
        `downloads`   int(11)   NOT   NULL   default   '0 ', 
        `author_id`   int(11)   NOT   NULL   default   '0 ', 
        `created_on`   datetime   default   NULL, 
        `description`   varchar(255)   default   NULL, 
        PRIMARY   KEY     (`id`), 
        KEY   `index_attachments_on_container_id_and_container_type`   (`container_id`,`container_type`), 
        KEY   `index_attachments_on_author_id`   (`author_id`), 
        KEY   `index_attachments_on_created_on`   (`created_on`) 
    ) 就是红字的部分 我不知道怎么创建字段的自增
    能帮忙写一下吗?????谢谢了^^^^^^^^^^^
      

  5.   

    ORACLE中没有自增字段。 你必须先创建一个sequence ,然后可以在表的触发器中设置这个字段.CREATE SEQUENCE customers_seq
    START WITH      1000
    INCREMENT BY    1
    NOCACHE
    NOCYCLE;
    CREATE OR REPLACE
    TRIGGER NEW_EVALUATION_TRIGGER
    BEFORE INSERT ON EVALUATIONS
    FOR EACH ROW
    BEGIN
      :NEW.evaluation_id := customers_seq.NEXTVAL;
    END;
      

  6.   

    个人感觉mysql的sql综合了oracle和mssql的sql,而sybase的sql跟mssql几乎一样。
    db2的sql以跟以上的各种sql语法相差甚远。
      

  7.   

    pl/sql的数据类型最为简单,number,varchar2,date足以。
      

  8.   

    虽然没有在这里找到答案
    但是还是解决了这个问题
    还是发一下自己改的情况
    希望以后给初识Oracle的
    c友们一些微薄帮助和安慰  CREATE TABLE attachments (
      id number NOT NULL,
      container_id number default '0' NOT NULL,
      container_type varchar2(30)  default '' NOT NULL,
      filename   varchar2(255) default '' NOT NULL,
      disk_filename varchar2(255) default '' NOT NULL ,
      filesize number  default '0' NOT NULL,
      content_type varchar2(255) default '',
      digest varchar2(40)  default '' NOT NULL,
      downloads number  default '0' NOT NULL,
      author_id number default '0' NOT NULL ,
      created_on date default NULL,
      description varchar2(255) default NULL,
      PRIMARY KEY  (id)
     -- KEY `index_attachments_on_container_id_and_container_type` (`container_id`,`container_type`),
     -- KEY `index_attachments_on_author_id` (`author_id`),
     -- KEY `index_attachments_on_created_on` (`created_on`)
      );
     BEGIN
      CREATE SEQUENCE attachments_id START WITH  1 INCREMENT BY 1 NOCACHE NOCYCLE;
      ALTER TABLE attachments;
      CREATE INDEXidx_attachments_on_au_con_type on attachments (container_id,container_type);
      CREATE INDEX idx_attachments_on_author_id on attachments (author_id);
      CREATE INDEX idx_attachments_on_created_on on attachments (created_on);
     END