Zum Inhalt springen

DataTransformationService/ActiveX


schnitzel21m

Empfohlene Beiträge

so, ich versuche mit DTS Files auf SQL-Server zu importieren.

zuerst:

ich importiere den file nach C:\peter\stinkt\nach\kot12345.txt

gut, der file heißt nie gleich; der file heißt bsp.weise kot122345, dann kot533243 usw.

Wenn ich jetzt die sog. Connection1 aufbauen will, kann ich immer nur einen file mit dem namen ansprechen.

leider ändert sich der name ja mit jedem file!

kann ich den file mit Kot%%%%%%%.txt ansprechen?

gibt es platzhalter?

wie kann ich aber nun dem SQL-Enterprise-MAnager-DTS beibringen, dass mein file immer anders heißt?

PS: die struktur bleibt gleich!

weiß jemand was?

Link zu diesem Kommentar
Auf anderen Seiten teilen

die hilfe von dem enterprise manager ist so schlecht wie meine frisur!

da steht nur oberflächlicher schund drin!

ich will das ungefähr so gestalten:

'**********************************************************************

' Visual Basic ActiveX Script

'************************************************************************

Function Main()

Dim fso 'File system object

Dim objFile, objFolder

Set fso = CreateObject("Scripting.FileSystemObject")

IF (fso.FileExistsc

("R:\ears\ears_open_item_tbl\

earsopenitemtbl%%%%%%%%%%%%.txt")) THEN

objFile.Move("C:\Ears\Ears_open_item_tbl\")

END IF

Set fso = nothing

Set objFile = nothing

Main = DTSTaskExecResult_Success

End Function

...so, jetzt will ich dem server in diesem script noch vermitteln, dass er den gerade eingelesenen (objFile.Name) in die datenbank liest; un zwar in die earsopenitem_tbl!!!

wie mach ich das?

kann/muß ich da auch noch ne importspezifikation bauen?

in dem script meine ich?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde sagen, du bist schon knapp vor der Lösung.

Ich zitiere aus der (schlechten?) Online-Hilfe des Enterprise-Managers:

BulkInsertTask Object (DTS)

-------------------------------------

The BulkInsertTask object, based on the Transact-SQL BULK INSERT statement, provides the fastest method of copying large amounts of data from a text file to Microsoft® SQL Server™. Use BulkInsert task for copying operations, and in situations where performance is the most important consideration. It is not used in conjunction with transformations during data import operations.

Dieses Objekt sollte man sich mal genauer ansehen.

Für dich besonders interessant:

DestinationTableName Property

FieldTerminator Property

ConnectionID Property

DataFile Property

DataFileType Property

Execute Method

...

(Index -> Stichwort: BulkInsertTask object)

Vielleicht gibts auch noch ne einfachere Möglichkeit:

Wenn du mit dem DTS-Assistenten eine herkömmliches Paket erstellst, dann kann man doch bestimmt auf dieses zugreifen, oder?

Es würde mich nicht wundern wenn man die o.g. Scriptobjekte verwenden könnte um dieses Paket zu ändern.

Wenn das nicht funktioniert, dann musst du halt den gesamten Script schreiben.

Mehr kann ich dir leider auch nicht sagen, da ich nur sehr selten mit SQL-Servern Daten hin und herschiebe.

Vielleicht hiilfts dir ja weiter?

MfG

Link zu diesem Kommentar
Auf anderen Seiten teilen

ganz einfaches beispiel:

'**********************************************************************

' Visual Basic ActiveX Script

'************************************************************************

Function Main()

Dim fso 'File system object

Dim objFile, objFolder

Set fso = CreateObject("Scripting.FileSystemObject")

IF (fso.FileExists("C:\Ears\earsopenitemtbl%%%%%%%%%%%%.txt")) THEN

fso.CopyFile("\\jvkraxon\C$\Ears\Ears_open_item_tbl\")

fso.DeleteFile("\\jvkraxon\dart\ears\ears_open_item_tbl\earsopenitemtbl%%%%%%%%%%%%.txt")

END IF

Set fso = nothing

Set objFile = nothing

Main = DTSTaskExecResult_Success

End Function

...wenn ich das ausführe passiert überhaupt nix!

normeilerweise müsste der file in einen anderen folder copiert werden un dann aus dem alten folder gelöscht werden.

warum macht der s**rechner garnix?

es werden keine syntaxfehler angezeigt un außerdm sagt der sa**-rechner auch noch: "hey, fantastisch, ich habe alles ausgeführt-hat geklappt"

...aber nix hat der ar*** gemacht!

kann mir irgendjemand verraten, warum die s** das net macht?

[keine Faekalsprache, hades]

Link zu diesem Kommentar
Auf anderen Seiten teilen

VB ist zwar eine "einfache" Programmiersprache, aber trotzdem kann sie nicht erraten was du eigentlich vorhast... :-)

1. FileExist kann nur einzelne Datei prüfen, Platzhalter sind nicht erlaubt

2. Deine Zeile

fso.CopyFile("\\jvkraxon\C$\Ears\Ears_open_item_tbl\")

ist syntaktisch falsch, da Quelle und Ziel angegeben werden müssen!

3. Normalerweise müsstest du eine Fehlermeldung "Argument ist nicht optional bekommen!" aber er ist ja gar nicht an die Stelle gekommen, da es die Datei nicht gab --> FileExists gab false zurück!!!

Der richtige Syntax lautet (lt. VB Objektkatalog):


Sub CopyFile(Source As String, Destination As String, [OverWriteFiles As Boolean = Wahr])

    Element von Scripting.FileSystemObject

    Eine Datei kopieren

Also für dich heist das konkret:

..

Dim fso 'File system object 

Set fso = CreateObject("Scripting.FileSystemObject") 


fso.CopyFile "c:\temp\*.txt", "\\jvkraxon\C$\Ears\Ears_open_item_tbl"

fso.DeleteFile "c:\temp\*.txt"


Set fso = nothing 

..

Hilft das weiter?

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja, das habe ich auch schon versuch: quelle und ziel angeben!

ich tippe den ganzen mist in VB Script-Language!

ich weiß nicht, ob die funktionen da so übereinstimmen: mache ich es so, wie du eben geschrieben hast, dann kommt eine fehlermeldung 0x24521654 usw!

wenn ich einen file verschieben möchte, sag ich ja auch eigentlich:

objFile.Move("von", "nach")

hier heißt es aber:

objFile.Move("nach")

oder liegt das an dem objFile?

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Es ist ein Unterschied ob du die Funktion Move vom FileSystem - Objekt oder vom Datei-Objekt aufrufst.

am besten man schaut in die Dokumentation:


Sub CopyFile(Source As String, Destination As String, [OverWriteFiles As Boolean = Wahr])

    Element von Scripting.FileSystemObject

    Eine Datei kopieren


Sub Copy(Destination As String, [OverWriteFiles As Boolean = Wahr])

    Element von Scripting.File

    Diese Datei kopieren

2. Ich selbst nehme nie den VB-Script Editor für sowas, ist einfach schlecht zu debuggen und die Fehlermeldung sind manchmal absolut hirnrissig.

Ich bevorzuge 2 Möglichkeiten:

a) Einfach den VBA-Editor von Word, Excel oder Access verwenden und den VB-Script in eine Prozedur reinschreiben. Dabei sollte man aber vorher die Scripting-Objekte (als Verweis - "Microsoft Scripting Runtime") einbinden. So kann man über den Objektkatalog die gesamte API einsehen. Und man muss aufpassen, dass man keine speziellen Befehle des jeweiligen Office-Programms benutzt!!!

B) Oder du hast VisualBasic auf deinem Rechner, dann kannst du auch das benutzen.

Eine gute Dokumentation dazu gibts in der MSDN.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...