Конвертировать запрос SQL Server в MySQL - PullRequest
0 голосов
/ 10 мая 2011

это мой простой запрос, написанный на сервере ms sql ... теперь мне нужно преобразовать эту базу данных в mysql ... предложите мне самый простой способ сделать это ... заранее спасибо

CREATE TABLE DEPARTMENT
(
DEPARTMENT_ID int NOT NULL PRIMARY KEY,
DEPARTMENT_NAME VARCHAR(20) NOT NULL,
DEAPRTMENT_OFFICE_NO VARCHAR(20),
)
CREATE TABLE PREVIOUS_ACADEMIC_INFO
(
ACADEMIC_ID int NOT NULL PRIMARY KEY,
DEGREE_DESCRIPTION VARCHAR(50),
CERTIFICATION VARCHAR(30),
DURATION DATETIME
)
CREATE TABLE CLASS
(
CLASS_NAME VARCHAR(20) NOT NULL PRIMARY KEY,
CLASS_STRENGTH INT NOT NULL,
)
CREATE TABLE STUDENT
(
STUDENT_REGNO  INT  NOT NULL PRIMARY KEY,
STUDENT_FIRSTNAME VARCHAR(30) NOT NULL,
STUDENT_LASTNAME VARCHAR(20) NOT NULL,
STUDENT_FATHER_NAME VARCHAR(30) NOT NULL,
STUDENT_EMAIL VARCHAR(20),
STUDENT_MOBILE_NO VARCHAR(15),
STUDENT_PHONE_NO VARCHAR(15),
STUDENT_ADDRESS VARCHAR (40),
DEPARTMENT_ID INT   CONSTRAINT DEP_1 FOREIGN KEY(DEPARTMENT_ID)
 REFERENCES DEPARTMENT(DEPARTMENT_ID),
ACADEMIC_ID INT CONSTRAINT PREVIOUS_ACADEMIC_1 FOREIGN KEY(ACADEMIC_ID)
REFERENCES PREVIOUS_ACADEMIC_INFO(ACADEMIC_ID),
CLASS_NAME VARCHAR(20) CONSTRAINT CLASS_1 FOREIGN KEY (CLASS_NAME)
REFERENCES CLASS(CLASS_NAME)
)
CREATE TABLE FACULTY
(
FACULTY_ID INT  NOT NULL PRIMARY KEY,
FACULTY_NAME VARCHAR(20) NOT NULL,
FACULTY_FATHER_NAME VARCHAR(30) NOT NULL,
FACULTY_EMAIL VARCHAR(20),
FACULTY_ADDRESS VARCHAR(40) NOT NULL,
FACULTY_MOBILE_NO VARCHAR(30),
FACULTY_PHONE_NO VARCHAR(20),
FACULTY_QUALIFICATION VARCHAR(20),
DEPARTMENT_ID INT CONSTRAINT DEPARTEMNT_2 FOREIGN KEY (DEPARTMENT_ID)
REFERENCES DEPARTMENT(DEPARTMENT_ID),
ACADEMIC_ID INT CONSTRAINT ACADEMIC_1 FOREIGN KEY(ACADEMIC_ID)
REFERENCES PREVIOUS_ACADEMIC_INFO(ACADEMIC_ID)
)
CREATE TABLE USER1
(
USERNAME VARCHAR(20) NOT NULL,
USER_PASSWORD VARCHAR(6) NOT NULL,
USER_TYPE VARCHAR(20) NOT NULL,

)
CREATE TABLE COURSE
(
COURSE_ID INT NOT NULL PRIMARY KEY,
COURSE_NAME VARCHAR(20) NOT NULL,
COURSE_CREDIT_HR INT NOT NULL,
COURSE_DESCRIPTION VARCHAR(99),
)

CREATE TABLE ANNOUNCMENT
(
ANNOUNCMENT_ID int NOT NULL PRIMARY KEY,
ANNOUNCMENT_DESCRIPTION VARCHAR(50),
ANNOUNCMENT_TITLE VARCHAR(45)
)
CREATE TABLE FORUM
(
FORUM_ID int NOT NULL PRIMARY KEY,
FORUM_NAME VARCHAR(35) NOT NULL,
FORUM_DESCRIPTION VARCHAR(333),
FORUM_DISCUSSION VARCHAR(22),
POSTED_BY VARCHAR(34)
)
CREATE TABLE GRADE
(
LETTER_GRADE CHAR NOT NULL ,
PERCENTAGE FLOAT NOT NULL,
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT_REGNO)
REFERENCES STUDENT(STUDENT_REGNO),
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE_ID)
REFERENCES COURSE(COURSE_ID)
)

CREATE TABLE TERM
(
TERM_START_DATE DATETIME NOT NULL,
TERM_END_DATE DATETIME NOT NULL,
student_regno int CONSTRAINT STUDENT_2 FOREIGN KEY(STUDENT_REGNO)
REFERENCES STUDENT(STUDENT_REGNO)
)

CREATE TABLE TEACHER_COURSE
(
AREA_OF_SPECILIZATION VARCHAR(30),
faculty_id int CONSTRAINT FACULTY_1 FOREIGN KEY(FACULTY_ID)
REFERENCES FACULTY(FACULTY_ID)
)

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Простого решения не существует - вам нужно конвертировать его вручную, вручную.Синтаксис для создания таблицы более или менее такой же, вещи, которые вам нужно изменить, это типы данных и ограничения.Вы можете проверить все типы данных и синтаксис создания противоречий в справочном руководстве mysql, которое можно найти здесь: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax.html

РЕДАКТИРОВАТЬ (на основе комментария)

Если вы ищетечтобы перейти с SQL SERVER на mySql (а не просто конвертировать запросы), попробуйте поискать здесь: http://dev.mysql.com/tech-resources/articles/migrating-from-microsoft.html

Migration Tools
There are a wide variety of tools available to help you migrate a SQL Server or Access database to MySQL. We'll look at several different tools so you can choose the one that best suits your needs. The tools we will look at will include the following:

MSSQL2MYSQL
Microsoft DTS
SQLyog
Access Export 
Text Import/Export 
SQLYog and the Microsoft DTS wizard offer graphical interfaces that can be used with both MSSQL and Microsoft Access to import tables into MySQL. MSSQL2MYSQL is a script by Michael Kofler that can convert not only the table structure and data, but converts the index information as well. If you use Microsoft Access you may not have access to the above tools, but you can use the data export features of Access.
1 голос
/ 10 мая 2011

Базовый синтаксис должен работать, но есть одна ошибка:

Вам нужно переместить все «встроенные» ограничения внешнего ключа либо в конец таблицы, либо в ALTER TABLE, как InnoDBигнорирует встроенные ограничения, «прикрепленные» к столбцу:

Кроме того, InnoDB не распознает и не поддерживает «встроенные спецификации ссылок» (как определено в стандарте SQL), где ссылки определяются какчасть спецификации столбца.InnoDB принимает предложения REFERENCES только в том случае, если они указаны как часть отдельной спецификации FOREIGN KEY.

From: http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

Итак, этот оператор

CREATE TABLE GRADE
(
  LETTER_GRADE CHAR NOT NULL ,
  PERCENTAGE FLOAT NOT NULL,
  STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT_REGNO)
  REFERENCES STUDENT(STUDENT_REGNO),
  COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE_ID)
  REFERENCES COURSE(COURSE_ID)
)

должно стать:

CREATE TABLE GRADE
(
  LETTER_GRADE CHAR NOT NULL,
  PERCENTAGE FLOAT NOT NULL,
  STUDENT_REGNO int,
  COURSE_ID int,
  CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT_REGNO) REFERENCES STUDENT(STUDENT_REGNO),
  CONSTRAINT COURSE_1 FOREIGN KEY(COURSE_ID) REFERENCES COURSE(COURSE_ID)
)

Обратите внимание на небольшую разницу в позиционировании определения ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...