`
lujar
  • 浏览: 525413 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

将Access数据库移植到Oracle笔记

阅读更多

开始移植工作的时候,尝试了很多自动转换工具,包括access通过odbc导出,csv导入等等,发现有一些问题: 例如得到字段类型转换不能满意,象Boolean被变成Char等等.后来开始自己写转换脚本.

1 最简单的使用SQL插入.所有的表结构通过手工定义.

<%@ LANGUAGE = VBScript CodePage = 936%>
<%

dim ConnStr,conn1,conn2,Db

Db = "olddb.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)

Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.open ConnStr

Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
 SqlPassword = "test"
 SqlUsername = "SYSTEM"
 SqlLocalName = "ORCL"
 ConnStr = "Provider = OraOLEDB.Oracle.1; Persist Security Info=True; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Data Source = " & SqlLocalName & ";"

Set conn2 = Server.CreateObject("ADODB.Connection")
conn2.open ConnStr

sql="select * from XXLX"

Set rs1 = Server.CreateObject("ADODB.RecordSet")
rs1.Open SQL, Conn1, 1, 1

DO WHILE NOT rs1.EOF
      sql = "insert into XXLX (" _
      & "XXLXID" & "," _
      & "BUMEN" & "," _
      & "XXLX" & ")" _
      &"values('"  _
   & rs1("XXLXID") & "','" _
   & rs1("BUMEN") & "','" _
   & rs1("XXLX") & "')"
  
   Response.Write sql & " "
          conn2.execute(sql)
   rs1.MoveNext
LOOP

rs1.close
set rs1 = Nothing

conn1.close
set conn1=nothing

conn2.close
set conn2=nothing

%>

使用sql方式时候,要注意将字符串里面的'   " 转换掉.

If rs1("FILENAME") <> "" Then
filename =  Replace(rs1("FILENAME"),"'","''")
filename =  Replace(filename,"""","""""")
Else
filename = ""
End If

2 对于有些text字段很长,而oracle的SQL只能4000字的限制.将所有包含lob的字段通过ado 对拷的方式进行.

<%@ LANGUAGE = VBScript CodePage = 936%>
<%

dim ConnStr,conn1,conn2,Db,rs1,rs2

Db = "db.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)

Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.open ConnStr

Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName
 SqlPassword = "test"
 SqlUsername = "SYSTEM"
 SqlLocalName = "ORCL"
 ConnStr = "Provider = OraOLEDB.Oracle; Persist Security Info=True; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Data Source = " & SqlLocalName & ";"

Set conn2 = Server.CreateObject("ADODB.Connection")
conn2.open ConnStr

sql="SELECT * FROM MRCH ORDER BY ID ASC"

Set rs1 = Server.CreateObject("ADODB.RecordSet")
rs1.Open SQL, Conn1,1,1

sql="SELECT USERNAME USERNAME,ADDRESS ADDRESS,FILENAME FILENAME,INFO_TYPE INFO_TYPE,""DATE"" ""DATE"",TITLE TITLE,KEYWORD KEYWORD,SUMMARY SUMMARY,DOMAIN DOMAIN,DEPT DEPT,SENSITIVE SENSITIVE,SCBJ SCBJ,TIME TIME,JHXXLX JHXXLX FROM MRCH"
Set rs2 = Server.CreateObject("ADODB.RecordSet")
rs2.Open SQL, Conn2,1,4

Dim i,tmp
i = 0
DO WHILE NOT rs1.EOF
      i= i+1

      rs2.AddNew
      rs2("USERNAME")=rs1("USERNAME")
      rs2("ADDRESS")=rs1("ADDRESS")
      rs2("FILENAME")=rs1("FILENAME")
      rs2("INFO_TYPE")=rs1("INFO_TYPE")
      rs2("DATE")=rs1("DATE")
      rs2("TITLE")=rs1("TITLE")
      rs2("KEYWORD")=rs1("KEYWORD")
      rs2("SUMMARY")=rs1("SUMMARY")
      rs2("DOMAIN")=rs1("DOMAIN")
      rs2("DEPT")=rs1("DEPT")
      rs2("SENSITIVE")=rs1("SENSITIVE")
      rs2("SCBJ")=rs1("SCBJ")
      rs2("TIME")=rs1("TIME")
      rs2("JHXXLX")=rs1("JHXXLX")

      Response.Write i & rs1("SUMMARY") & rs1("TIME") &"<br>"
     
     
   rs1.MoveNext
LOOP

     rs2.updatebatch
     rs2.close
      set rs2 = Nothing

rs1.close
set rs1 = Nothing

conn1.close
set conn1=nothing

conn2.close
set conn2=nothing

%>

这里有三点要说明

1 必须使用oracle自己的oledb,用ms的,有数据类型的问题

2 所有的字段必须显示给出,否则oracle 会省略一些字段名: 例如info_type变成IN

3 ADO记录必须用1 4打开,批处理模式

分享到:
评论

相关推荐

    JDBC数据库连接笔记

    DAO(Data Access Object)模式是将数据访问逻辑封装在单独的对象中,用于与数据库进行交互,如增删改查操作。 批处理允许一次性提交多个SQL语句,提高效率。分页则是为了提高用户体验和减轻数据库压力,不同的...

    Oracle9i备课笔记——吕海东

    (1) 数据库技术:SQL Server, Oracle, DB2, Access, SQL, T-SQL, PL/SQL (2) 软件开发架构:J2SE, J2ME, J2EE, MS.NET (3) 开发语言: Java, C#.NET, J#.NET, VB.NET (4) Ineternet技术:HTML, XML, Web ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    凯达Java学习全套笔记

    - **作用**:提供了一组通用接口,使得Java程序可以连接到任何支持该标准的数据库。 - **使用场景**:数据查询、更新等操作。 5. **JSP (JavaServer Pages)**: 结合HTML标签和Java代码来生成动态网页的技术。 - ...

    j2EE框架笔记

    - JPA是Java的ORM(对象关系映射)规范,使得Java对象可以直接映射到数据库表。Hibernate是流行的JPA实现,提供了更丰富的功能和性能优化。 6. **JNDI(Java Naming and Directory Interface)** - JNDI提供了一...

    java基础笔记

    - **DAO(Data Access Object)支持**:简化数据库操作。 - **Spring MVC**:作为Web应用的分层架构,提供了Model、View和Controller的实现。 4. **JUnit** JUnit是Java编程语言的一个单元测试框架,它使得编写...

Global site tag (gtag.js) - Google Analytics