Arjuna Aircraft Ident.: F-MBSD | skeye a écrit :
on t'a déjà proposé 2 solutions (copie brute via access, et utilisation de SQL*Loader)...
|
Ben oui, j'en vois pas d'autre...
A la limite, pour re-créer la structure de la base, tu peux toujours utiliser un programme style "Power AMC", et faire "Reverse Engeneering", puis réexporter la structure vers Oracle.
Pour les données, y'a 3 solutions :
- SQL Loader
- Copie brute depuis Access via un pont ODBC
- Un Script VBS (ou tout autre langage) qui copie ligne par ligne chaque table :
Option Explicit
Dim cnxAcc, cnxOra
Set cnxAcc = CreateObject("ADODB.Connection" )
cnxAcc.Open "connextion à Access"
Set cnxOra = CreateObject("ADODB.Connection" )
cnxOra.Open "connextion à Oracle"
Dim rsAcc
Set rsAcc = CreateObject("ADODB.RecordSet" )
Set rsAcc.ActiveConnection = cnxAcc
dim Tables(x)
Tables(1) = "USER"
Tables(2) = "PRODUITS"
...
Tables(x) = "PRIX"
Dim i
Dim sql
Dim field
For i = lbound(Tables) to ubound(Tables)
rsAcc.Open "select * from " & Tables(i)
do while not rsAcc.EOF
sql = "insert into " & Tables(i) & " ("
For Each field in rs.Fields
sql = sql & field.Name & ", " )
Next
sql = mid(sql, 1, len(sql, - 2) & " ) values ("
For Each field in rs.Fields
sql = sql & "'" & Raplce(field.Value, "'", "''" ) & "', " )
Next
sql = mid(sql, 1, len(sql, - 2) & " )"
rsAcc.MoveNext
cnxOra.Execute sql
loop
rsAcc.Close
Next
Set rsAcc = Nothing
cnxAcc.Close
Set cnxAcc = Nothing
cnxOra.Close
Set cnxOra = Nothing |
Normalement, à un ou deux bugs près, ce script doit recopier sans problème les données des tables contenues dans le tableau "Tables" depuis Access vers Oracle.
Faire attention toutefois aux champs de type "TEXT" d'Access, il posent souvent problème quand on passe par ODBC. A tester. |