schnitzel21m Geschrieben 11. März 2002 Teilen Geschrieben 11. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 11. März 2002 Teilen Geschrieben 11. März 2002 Schau mal unter dem Stichwort "ActiveX-Skript-Transformationen" in der SQL-Server Enterprise Manager - Online Hilfe. Ich hoffe das hilft dir weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnitzel21m Geschrieben 12. März 2002 Autor Teilen Geschrieben 12. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 12. März 2002 Teilen Geschrieben 12. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnitzel21m Geschrieben 13. März 2002 Autor Teilen Geschrieben 13. März 2002 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 13. März 2002 Teilen Geschrieben 13. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schnitzel21m Geschrieben 13. März 2002 Autor Teilen Geschrieben 13. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Olli_Master Geschrieben 14. März 2002 Teilen Geschrieben 14. März 2002 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!!! Oder du hast VisualBasic auf deinem Rechner, dann kannst du auch das benutzen. Eine gute Dokumentation dazu gibts in der MSDN. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.