MSSQL 迁移 oracle
CREATE TABLE STUDENT ( ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, NAME VARCHAR2(50) NOT NULL, AGE NUMBER(3) NOT NULL, GENDER NUMBER(1) NOT NULL, SCORE FLOAT(2) NOT NULL, CREATE_TIME TIMESTAMP(6) DEFAULT SYSTIMESTAMP NOT NULL, CONSTRAINT PK_STUDENT PRIMARY KEY (ID) ); ALTER TABLE STUDENT ADD CONSTRAINT CK_STUDENT_SCORE CHECK (SCORE >= 0 AND SCORE
细节注意事项也非常重要。例如一些SQL语句的表达不同,在MSSQL中,我们可以使用SELECT TOP语句,而在Oracle中我们使用ROWNUM语句。在MSSQL中,我们可以使用SCOPE_IDENTITY获取新增记录的ID,而在Oracle中,我们需要使用RETURNING INTO语句获取。除此之外,还需要考虑数据类型转换、字符编码、数据量的限制等问题。
在实践中,我们可以先将MSSQL的数据导出为CSV文件,然后再导入Oracle中。通常情况下,我们可以使用Excel或者文本编辑器打开CSV文件,更好地查看数据内容。在进行导入时,我们可以使用Oracle的SQL Loader来完成。例如,我们可以使用如下的控制文件:
LOAD DATA INFILE '/path/to/data.csv' BADFILE '/path/to/data.bad' DISCARDFILE '/path/to/data.dsc' APPEND INTO TABLE STUDENT FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( ID, NAME, AGE, GENDER, SCORE, CREATE_TIME "to_date(:CREATE_TIME, 'yyyy-mm-dd hh24:mi:ss')" )