DISCLAIMER: Peoplesoft Wissen ist nicht zwingend erforderlich, um mir dabei zu helfen!Wie in Python einige Daten aufgebläht werden, die von Peoplesoft (Java) deflationiert wurden?
Wie konnte ich die Daten aus, dass People Tabelle extrahieren, aus der PUBDATALONG Spalte? Die Beschreibung der Tabelle ist hier: http://www.go-faster.co.uk/peopletools/psiblogdata.htm
Derzeit i ein Programm verwenden in Java geschrieben und unten ist ein Stück des Codes:
Inflater inflater = new Inflater();
byte[] result = new byte[rs.getInt("UNCOMPDATALEN")];
inflater.setInput(rs.getBytes("PUBDATALONG"));
int length = inflater.inflate(result);
System.out.println(new String(result, 0, length, "UTF-8"));
System.out.println();
System.out.println("-----");
System.out.println();
Wie kann ich dies mit Python neu schreiben? Es ist eine Frage, die in anderen Formen auf Stackoverflow erschien, aber keine echte Antwort hatte. Ich habe ein grundlegendes Verständnis dafür, was der Code in Java macht, aber ich kenne keine Bibliothek in Python, mit der ich arbeiten könnte, um das Gleiche zu erreichen.
Einige empfohlen zlib, um zu versuchen, wie es mit dem Algorithmus von Java Inflater Klasse verwendet wird, kompatibel ist, aber ich habe es nicht geschafft, dass zu tun. Unter Berücksichtigung der unten Fakten von People Handbuch:
When the message is received by the PeopleSoft database, the XML data is converted to UTF-8 to prevent any UCS2 byte order issues. It is also compressed using the deflate algorithm prior to storage in the database.
Ich habe versucht, so etwas wie dieses:
import zlib
import base64
UNCOMPDATALEN = 362 #this value is taken from the DB and is the dimension of the data after decompression.
PUBDATALONG = '789CB3B1AFC8CD51284B2D2ACECCCFB35532D43350B2B7E3E5B2F130F40C8977770D8977F4710D0A890F0E710C090D8EF70F0D09080DB183C8BAF938BAC707FBBBFB783ADA19DAE86388D904B90687FAC0F4DAD940CD70F67771B533B0D147E6DAE8A3A9D5C76B3F00E2F4355C=='
print zlib.decompress(base64.b64decode(PUBDATALONG), 0, 362)
und ich bekomme diese:
zlib.error: Error -3 while decompressing data: incorrect header check
für sicher, ob ich etwas falsch gemacht, aber Ich bin nicht schlau genug, es selbst herauszufinden.
i am Ende, dass == hinzugefügt verwenden, mein schlecht. Ich werde versuchen zu tun, was Sie empfohlen haben und lassen Sie es wissen. danke. –
es funktioniert perfekt. danke! –