Technik einfach und verständlich erklärt.
Sie können nützliches zu einem interessanten Thema berichten? Dann schreiben sie selbst einen Artikel auf Technikpedia!
 
Technik von Profis erklärt
Auf www.technikpedia.de können Sie Informationen zu verschiedenen Themen aus der Technik und Informatik finden. Durch verschiedene Editoren sind die Artikel besonders informativ und aussagekräftig.
Was ist ein Customer Relationship Management (CRM)?
CRM lässt sich mit Kundenbeziehungsmanagement übersetzen und meint bei Unternehmen mit Internetpräsenzen die Kundenpflege. Erst durch die Dokumentation und Verwaltung von Kundenbeziehungen ist ein wichtiges Beziehungsmarketing möglich.
Temporäre Tabellen in einer Datenbank
Die Idee einer temporären Tabelle
Wer es noch nicht kennt, dem möchte ich als Tipp temporäre Tabellen einer Datenbank vorstellen. Temporäre Tabellen gibt es für alle gängigen Datenbanksysteme. Ich verwende hier Microsoft SQL.
Temporäre Tabellen kann man zum Beispiel prima gebrauchen, wenn man sich mal eben schnell was merken will. Oder wenn man Daten zum Bearbeiten zwischenspeichern will eignet sich die schnelle und saubere Methode prima. Man braucht nicht erst eine View erzeugen oder per Hand eine Tabelle anlegen. Wie der Name vielleicht vermuten lässt, werden temporäre Tabellen nach Gebrauch, meistens nach Beendigung der Verbindung, gelöscht.
Erzeugung einer temporären Tabelle
Temporäre Tabellen können wie jede andere Tabelle mit dem Befehl CREATE TABLE <tabellenname> definiert und erzeugt werden. Beim Namen muss lediglich eine oder zwei Rauten (# oder ##) vorangestellt werden. Egal mit welcher Datenbank man gerade arbeitet, temporäre Tabellen werden intern in der Systemdatenbank tempdb gespeichert und sind aber überall verfügbar. Über den Speicherort braucht man sich in der Praxis keine Gedanken machen, da das Datenbankmanagementsystem sich automatisch darum kümmert. Nach der Beendigung der Datenbank-Session werden die Tabellen vom Datenbanksystem automatisch gelöscht und die Daten gehen verloren.
Ein echter Vorteil erschließt sich erst mit der Möglichkeit der direkten Erzeugung von temporär gefüllten Tabellen aus einem Select-Befehl. Das sieht dann zum Beispiel so aus:
SELECT * INTO #tempdaten FROM tabelle
So hat man direkt die von einem Select gelieferten Daten in einer temporären Tabelle zwischengespeichert. Man beachte, die Reihenfolge der Schlüsselwörter: erst select, dann into und zum Schluss from (und nicht erst from und dann into, sonst geht’s nicht).
Jetzt kann man nach Belieben die Daten weiterverarbeiten und Speichern.
Temporäre Tabellen in Stored Procedures
Eine wunderbare Verwendungsmöglichkeit ergibt sich bei gespeicherten Prozeduren (stored procedures). So können in einer temporären Tabelle prima die Daten manipuliert und dann automatisch weiterverarbeitet oder in andere Tabellen zurückgespeichert werden.
Sichtbarkeit – Der Unterschied zwischen einem und zwei Rauten (#) im Tabellenname (#tabellenname und ##tabellenname)
Werden bei dem Namen einer temporären Tabelle nur eine Raute (#) angegeben, so ist die Tabelle nur in der eigenen Verbindung sichtbar. Andere Verbindungen können nicht darauf zugreifen.
Bei temporären Tabellen mit zwei vorangestellten Rauten (##) sind diese auch für andere Sessions bzw. Verbindungen verfügbar.
Beide Arten von temporären Tabellen werden mitsamt ihren Inhalten gelöscht, wenn die Verbinung bzw. Session, in der die Tabelle erzeugt wurde, beendet wird.
Mit Openoffice Calc CSV-Dateien Speichern und unter Windows Einstellungen des Formates richtig festlegen
Wer mit der Tabellenkalkulation Calc von Openoffice.org (OOO) (Version 3.00 – Freeware) unter Windows schon einmal Dateien im CSV (comma seperated value)-Format speichern wollte, dem ist vielleicht aufgefallen, dass ihm da diverse Auswahlmöglichkeiten fehlen.
Es kann unter Umständen vorkommen, das man CSV-typische Einstellungen wie den Zeichensatz oder die Trennzeichen nicht auswählen kann. Standardmäßig wird immer im Zeichensatz latin-1 gespeichert, sowie ein Semikolon (;) als Feldtrenner und Anfürungsstriche („) als Texttrenner. Das Programm Openoffice.org speichert einfach ab, ohne vorher nachzufragen, wie die CSV-Datei nun genau aussehen kann.
Normalerweise kann man das Optionsfenster mit den Einstellungen zu den CSV-Dateien beim Speichern mit der Option „Filter Options“ bzw. in deutsch „Filteroptionen“ aktivieren. Das Feld ist aber unter Umständen, wie es bei mir der Fall war, aus unerklärlichen Gründen deaktiviert und ausgegraut.
Des Rätsels Lösung ist, dass Openoffice.org in den Standardeinstellungen den Speichern-Dialog von Windows verwendet. Wenn wir den OOO-eigenen Speichern-Dialog verwenden, dann sollte alles wie erhofft funktionieren.
Den Speichern-Dialog kann man unter den Einstellungen (Im Menü „Extras“ → „Optionen“ → „OpenOffice.org“ → „Allgemein“) ändern. Hier bei „Öffnen/Speichern-Dialoge“ das Häkchen „OpenOffice.org-Dialoge verwenden“ anklicken.
Sobald wir diese Einstellung vorgenommen haben, sieht unser Speichern-Dialog ein wenig anders aus.
Jetzt können wir hier „Filtereinstellungen bearbeiten“ anklicken. Und schön können wir nach einem Klick auf Speichern unsere gewünschten Einstellungen vornehmen.
Siehe da, Zeichensatz, Feldtrenner, Texttrenner – Alles ist da!
PHP: Select Textfeld von MS-SQL-Datenbank, Zeichen werden abgeschnitten
Wer mit Hilfe der Scriptsprache PHP schon mal auf eine Microsoft-SQL-Datenbank zugegriffen hat, kennt sicherlich das Problem, dass in den Standardeinstellungen beim Auslesen von Textfeldern aus der Datenbank Zeichen beim Auslesen einfach abgeschnitten werden.
Das hängt damit zusammen, dass beim Server der Speicher für den maximal größtmöglichen Wert des Datenbankfeldes vorgehalten werden muss. So wäre dies bei Textfeldern Unmengen an Bytes. In den Standardeinstellungen von PHP ist die Größe der Textfelder, wenn sie ausgelesen werden, aus Performancegründen begrenzt (meist 4096).
Das Problem lässt sich folgendermaßen beheben:
Damit die Texte von Textfeldern nicht mehr nach so „wenigen“ Zeichen abgeschnitten werden, kann auf dem Server, auf welchem PHP installiert ist, die php.ini angepasst werden.
Man suche nach den Zeilen, die mit mssql.textlimit, und mssql.textsize beginnen. Wenn sie nicht vorhanden sind, fügt man sie ein, bzw. entkommentiert die Zeilen, die als Beispiel bereits in der php.ini als Kommentar vorhanden sind.
Man setzt für beide Zeilen einen neuen Wert in Bytes, der ausreichend für die Textfelder ist, die man selektieren möchte. Das sieht dann zum Beispiel so aus:
mssql.textlimit = 10000000
mssql.textsize = 10000000
Wer keinen Zugriff auf die php.ini hat, und über ODBC-Treiber auf die Datenbank zugreift, kann auch sein PHP-Skript anpassen:
Der Zauberbefehl für PHP heißt odbc_longreadlen. Mit ihm steuert man die Nutzung der Text-Felder. Die Syntax für diesen Befehl lautet:
int odbc_longreadlen ( int $result_id , int $length )
Die $result_id ist das Handle, das von odbc_exec zurückgeliefert wurde. Bei $length wird angegeben, wie viel Bytes PHP zurück liefern soll.
Beispiel:
$Sql = ‚SELECT textfeld FROM tabelle‘;
$cc = odbc_connect( $Dsn, $User, $Pwd );
$result = odbc_exec( $cc, $Sql );
odbc_longreadlen($result, 500000);
odbc_fetch_into($result, & $Data );
Daten mittels ASP von der SQL-Datenbank holen
Ein ähnliches Problem gibt es, wenn man Datenfelder vom Typ „Text“ aus der Datenbank mittels ASP holen möchte. Dort muss man einen besonderen Cursortyp angeben:
Dim Db
Set Db = Server.CreateObject( „ADODB.Connection“ )
Db.CursorLocation = 3 ‚ adUseClient
Neben CursorLocation gibt es noch CursorType und Locktype.
Cursortype:
– adOpenForwardOnly: 0
– adOpenKeyset: 1
– adOpenDynaset: 2
– adOpenStatic: 3
CursorLocation:
– adUseServer: 2
– adUseClient: 3
Locktype:
adLockUnspecified: -1
adLockReadOnly: 1
adLockPessimistic: 2
adLockOptimistic: 3
adLockLockBatch: 4