Dim objFSO
Dim objTextFileDataBrut
Dim objTextFileRequeteSQLInsert
Dim CheminFichierDataBrut
Dim CheminFichierRequeteSQLInsert
Dim CheminScriptActuel
Dim LineNumber
Dim RequeteNomTableSelect
Dim RequeteNomBaseInsert
Dim RequeteNomTableInsert
Dim RequeteInsert01
Dim RequeteInsert02
Dim RequeteInsertComplete
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
Const adUseServer = 2
Const adUseClient = 3
Const adCmdText = 1
Const adModeRead = 1
Const adModeReadWrite = 3
Call DetectExeType
RequeteNomTableSelect = "ma.table"
RequeteNomBaseInsert = "NomBaseOracle"
RequeteNomTableInsert = "dbo.NomTableCible"
CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichierDataBrut = CheminScriptActuel & "\VbOracleExport_Export.txt"
CheminFichierRequeteSQLInsert = CheminScriptActuel & "\VbOracleExport_RequeteSQLInsert.txt"
If Len(CheminFichierDataBrut) > 0 Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFileDataBrut = objFSO.OpenTextFile(CheminFichierDataBrut, ForWritting, True)
Set objTextFileRequeteSQLInsert = objFSO.OpenTextFile(CheminFichierRequeteSQLInsert, ForWritting, True)
Set objConnection = CreateObject("ADODB.Connection")
Set MonRecordset = CreateObject("ADODB.Recordset")
objConnection.Mode = adModeReadWrite
objConnection.CursorLocation = adUseClient
objConnection.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=NomDeclarationOracle;User ID=login;Password=motdepasse"
objConnection.Open
Wscript.Echo "Connexion avec la Base Ok"
RequeteSql = "SELECT *"
RequeteSql = RequeteSql & " " & "FROM " & RequeteNomTableSelect
On Error Resume Next
MonRecordset.Open RequeteSql, objConnection, adOpenKeyset, adLockOptimistic
LineNumber = 0
If MonRecordset.BOF = False Then MonRecordset.MoveFirst
Do While MonRecordset.EOF = False
LineNumber = LineNumber + 1
If LineNumber = 1 Then
MaLigne = ""
RequeteInsert01 = ""
For CompteurChamps = 0 To MonRecordset.fields.Count - 1
MaLigne = MaLigne & MonRecordset.fields(CompteurChamps).Name & VbTab
RequeteInsert01 = RequeteInsert01 & MonRecordset.fields(CompteurChamps).Name & ", "
Next
If Len(MaLigne) > 0 Then
MaLigne = Left(MaLigne,Len(MaLigne)-1)
RequeteInsert01 = Left(RequeteInsert01,Len(RequeteInsert01)-2)
End If
objTextFileDataBrut.WriteLine(MaLigne)
objTextFileRequeteSQLInsert.WriteLine("Use " & RequeteNomBaseInsert & ";")
objTextFileRequeteSQLInsert.WriteLine("Delete * From " & RequeteNomTableInsert & ";")
objTextFileRequeteSQLInsert.WriteLine("Go")
End If
MaLigne = ""
RequeteInsert02 = ""
For CompteurChamps = 0 To MonRecordset.fields.Count - 1
MaLigne = MaLigne & MonRecordset.fields(CompteurChamps).Value & VbTab
RequeteInsert02 = RequeteInsert02 & "'" & ModifierCaractSpeRequeteSQL(MonRecordset.fields(CompteurChamps).Value) & "',"
Next
If Len(MaLigne) > 0 Then
MaLigne = Left(MaLigne,Len(MaLigne)-1)
RequeteInsert02 = Left(RequeteInsert02,Len(RequeteInsert02)-1)
End If
RequeteInsertComplete = "Insert Into " & RequeteNomTableInsert & " (" & RequeteInsert01 & ") Values (" & RequeteInsert02 & ");"
objTextFileDataBrut.WriteLine(MaLigne)
objTextFileRequeteSQLInsert.WriteLine(RequeteInsertComplete)
MonRecordset.MoveNext
Loop
MonRecordset.Close
objConnection.Close
objTextFileRequeteSQLInsert.WriteLine("Go")
objTextFileRequeteSQLInsert.Close
objTextFileDataBrut.Close
Set objTextFileDataBrut = Nothing
Set objFSO = Nothing
End If
Wscript.Echo "Termine"
Sub DetectExeType()
Dim ScriptHost
Dim ShellObject
Dim CurrentPathExt
Dim EnvObject
Dim RegCScript
Dim RegPopupType
RegPopupType = 32 + 4
On Error Resume Next
ScriptHost = WScript.FullName
ScriptHost = Right(ScriptHost, Len(ScriptHost) - InStrRev(ScriptHost, "\"))
If (UCase(ScriptHost) = "WSCRIPT.EXE") Then
WScript.Echo ("This script does not work with WScript.")
Set ShellObject = WScript.CreateObject("WScript.Shell")
RegCScript = ShellObject.PopUp("Would you like to register CScript as your default host for VBscript?", 0, "Register CScript", RegPopupType)
If (Err.Number <> 0) Then
ReportError ()
WScript.Echo "To run this script using CScript, type: ""CScript.exe " & WScript.ScriptName & """"
WScript.Quit (GENERAL_FAILURE)
WScript.Quit (Err.Number)
End If
If (RegCScript = 6) Then
ShellObject.RegWrite "HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ"
ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ"
CurrentPathExt = ShellObject.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT")
If Err.Number = &H80070002 Then
Err.Clear
Set EnvObject = ShellObject.Environment("PROCESS")
CurrentPathExt = EnvObject.Item("PATHEXT")
End If
ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT", CurrentPathExt & ";.VBS", "REG_SZ"
If (Err.Number <> 0) Then
ReportError ()
WScript.Echo "Error Trying to write the registry settings!"
WScript.Quit (Err.Number)
Else
WScript.Echo "Successfully registered CScript"
End If
Else
WScript.Echo "To run this script type: ""CScript.Exe adsutil.vbs <cmd> <params>"""
End If
Dim ProcString
Dim ArgIndex
Dim ArgObj
Dim Result
ProcString = "Cscript //nologo " & WScript.ScriptFullName
Set ArgObj = WScript.Arguments
For ArgIndex = 0 To ArgCount - 1
ProcString = ProcString & " " & Args(ArgIndex)
Next
Result = ShellObject.Run(ProcString, 0, True)
WScript.Quit (Result)
End If
End Sub
Public Function ModifierCaractSpeRequeteSQL(ByVal MaLigne)
ModifierCaractSpeRequeteSQL = MaLigne
If Len(Trim(MaLigne)) > 0 Then
MaLigne = Replace(MaLigne, "'", "' + Char(39) + '")
MaLigne = Replace(MaLigne, ";", "' + Char(59) + '")
MaLigne = Replace(MaLigne, Chr(9), "' + Char(9) + '")
MaLigne = Replace(MaLigne, Chr(10), "' + Char(10) + '")
MaLigne = Replace(MaLigne, Chr(13), "' + Char(13) + '")
ModifierCaractSpeRequeteSQL = MaLigne
End If
End Function
Lien vers le fichier : cliquez ici