[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    385

    Batch Import einer tlw. UCS2 Tabelle in Access

    Hallo zsammen,

    ich habe eine Tabelle, welche tlw. Graphic-Felder (CCSID 13488) hat und tlw. Standard Alpha Felder mit CCSID 273. Die KeyFelder und die Protokollfelder sind mit der CCSID 273 codiert.

    Nun muss ich diese per Batch in eine MS-ACCESS DB importieren --> Nein es kann keine andere DB sein.

    Bisher war die Tabelle volsltändig mit der CCSID 273 codiert und der Import lief per TXT-Datei die über FTP übertragen worden ist.

    Wie kann ich den import am elegantesten Erledigen.

    1. Per ODBC einen Import definieren. Allerdings erstellt ACCESS dann immre eine neue Tabelle und überschreibt die bisherige Tabelle nicht. Desweitern kann ich den Namen der Tabelle nicht ändern/angeben.
    Zusätzlich käme noch die Anmeldeproblematik dazu.

    2. Per FTP und Textdatei? Fällt doch weg wegen den GRAPHIC Feldern!


    Bin für Tipps und Tricks wie immer dankbar.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Als Textdatei (CSV) kann man auch eine UTF8-Ausgabe (CCSID 1208) erstellen und diese dann in Access importieren.

    Wie hast du denn den aktuellen Import überhaupt durchgeführt?
    Ich denke, du verwendest dann eben ein VBA-Macro innerhalb Access.
    In diesem Fall würde ich die Tabelle per ODBC verknüpfen und als Makro sowohl eine Lösch- als auch eine Anfügeabfrage erstellen und diese dann nacheinander durchführen.

    Automatisieren lässt sich das auch, wenn man eben beim Öffnen das Makro dann ausführt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    385
    Hallo Fuerchau,

    hast Recht da ist noch ein keines VB-Progrämmchen im Hintergrund.

    Habe jetzt extra die CCSID 13488 UCS2 (angeblich bessere kompatibilität mit MS und JAVA?!?!) genommen um meine kyrislischen Schriftzeichen - älterer Post - speichern zu können.

    Wenn eine Konvertierung auf UTF8 läuft, dann gehen diese doch verloren? UTF8 kann das zwar auch kyrillische Zeichen, aber diese werden dort as 3 oder 4-Byte Zeichen gespeichert.

    Beim ODBC Import bleibt doch eigentlich alles erhalten?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ja und Nein.
    Der ODBC-Treiber von CA kann beim Umweg über ADODB leider kein UCS2!
    Dies liegt leider daran, dass der MSDASQL-OLEDB-Treiber ein ODBC-2x-Treiber ist und CA dann davon ausgeht, dass der kein UCS2 (adWChar, adVarWChar) kann.

    Was aber funktioniert, ist der OLEDB-Treiber IBMDA400.
    Der kann dann auch UCS2, die Daten kommen dann also als wChar an.

    MS-Access (also MS-Office) direkt verwendet kein ADODB!

    Die verwenden die "klassische" DAO-Welt, die aber wiederum ODBC-3.5-Kompatibel ist, und somit auch wChar unterstützt.

    Du kannst also entweder dein VB'chen auf DAO umstellen oder den OLEDB-Treiber IBMDA400 verwenden.

    Alternative:
    Wie importierst du denn nun zur Zeit?
    Wenn du per VB eine Datei direkt öffnest, kannst du natürlich kein UTF-8 verarbeiten.
    Allerdings gibt es bei ADODB noch das Objekt Stream.
    Mit diesem kannst du Daten als UTF8 lesen und erhältst dann einen String beim Lesen der automatisch in UCS2 ist, da VB-Strings dies ja grundsätzlich sind.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also zur Zeit läuft ein kleines Macro im hintergrund welches die Tabelle cleart und die Textdatei im "RAW-Import" (gespeicherte Importanweisung) einliest.

    Ich wollte daher entweder diesen Vorgang gleich lassen und ggf. den FTP nicht aus der DB Herraus
    Code:
    get FILE.PF TEXT.TXT
    sondern die Textdatei vorher wie folgt

    Code:
     ===> CPYTOIMPF FROMFILE(LIB/FILE) TOSTMF('/HOME/VRZ/TEXT_UTF.txt') M
    BROPT(*REPLACE) STMFCCSID(1208) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE) FLDDLM(';') DATFMT(*EUR) TIMFMT(*JIS) ADDCOLNAM(*SYS)
    erstellen als Import-Grundlage nehmen.

    Alternativ über eine ODBC-Verbindung (Akt. Client Access Treiber) den Import direkt aus der DB herraus vornehmen; allerdings auch über ein kleines VB-Progrämmchen.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Also RAW_Import sagt mir jetzt nichts.

    Wer oder was führt das Makro denn aus?
    Wird irgendeine Access-Funktion angestoßen?

    Ich denke, dein Text-Import geht nicht von UTF-8 aus.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    385
    RAW_Import bedeutet (für mich) nimm die Textdatei und schiebe diese in die Tabelle (Importfunktion von ACCESS mit Textdatei).

    Ähnlich wie eine Textdatei per FTP in eine PF zu schieben

    Werde mich mal mit dem ODBC-Import auseinander setzen.

    Danke aber erstmal.

Similar Threads

  1. Import über Iseries Access mit Trennzeichen
    By Salutaris in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 19-06-12, 15:37
  2. Prozessdauer bei Import nach MS Access via ODBC
    By THK in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 06-11-08, 12:33
  3. MS Access ODBC mit JOIN: SQL FEHLER666
    By olafu in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-10-06, 08:13
  4. ADO-Connection-Abfrage in Access Tabelle speichern
    By Spoldo in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 10-03-05, 19:13
  5. Import von Access Datenbank
    By Muchi in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 08-12-04, 14:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •