Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
18. Feb 2011
Teaser

mySQL: Datensatz mit neuer ID duplizieren (kopieren, klonen)

Um in mySQL einen Datensatz (record) in einer Tabelle (table) zu kopieren und dabei gleichzeitig eine neue ID zu vergeben, nutzen Sie folgenden SQL Befehl in einem Aufruf:

CREATE TEMPORARY TABLE tmp SELECT * FROM beispiel WHERE id = 123;
UPDATE tmp SET id = null;
INSERT INTO beispiel SELECT * FROM tmp;

Die Erklärung:

Sie erstellen eine temporäre Tabelle (“tmp”) aus dem Datensatz Nr. 123 der Tabelle “beispiel”. Dadurch werden gleichzeitig die Felder der Tabelle ausgelesen und zwischengespeichert. Dann setzen Sie die ID in der Kopie auf “null” (das Feld wird geleert) und fügen diesen modifizierten Datensatz gleich wieder ein.

Weitere Möglichkeiten:

Natürlich können Sie im mittleren Schritt (hier das Setzen der ID auf “null”) auch andere Veränderungen am Datensatz durchführen. Wenn Sie z.Bsp. das Feld “name” mit “Max Muster” füllen möchten, nutzen Sie folgenden Befehl:

CREATE TEMPORARY TABLE tmp SELECT * FROM beispiel WHERE id = 123;
UPDATE tmp SET id = null, name = 'Max Muster';
INSERT INTO beispiel SELECT * FROM tmp;

Auch das Verarbeiten / Kopieren mehrerer Datensätze in einem Aufruf ist möglich:

CREATE TEMPORARY TABLE tmp SELECT * FROM beispiel WHERE id > 123;
UPDATE tmp SET id = null;
INSERT INTO beispiel SELECT * FROM tmp;

Im Beispiel werden zuerst alle Datensätze (records) mit einer ID über 123 in die temporäre Tabelle kopiert, dann deren ID auf “null” gesetzt und anschließend alle wieder in die Tabelle eingefügt. Dabei beachten Sie bitte, dass evtl. sehr viele Datensätze erzeugt werden können. Haben Sie z.Bsp. 10.000 Einträge über der ID 123, dann haben Sie nach diesem SQL Befehl 20.000 in der Tabelle …


Als Ergänzung und Hilfe für unsere PERL Benutzer haben wir folgendes Beispiel von einem Benutzer erhalten. Es zeigt den Aufruf per PERL:DBI und soll als Muster dienen – in der Praxis werden einige die “use strict” Definitionen einpflegen wollen.

# 1.
$sql = "CREATE TEMPORARY TABLE tmp SELECT * FROM Tabelle WHERE ID = '".$F{ID}."'";
my $query = $db->prepare($sql);
die "Error: $DBI::errstr\n" if $DBI::err;
$query->execute();
die "Error: $DBI::errstr\n" if $DBI::err;

# 2.
$sql = "UPDATE tmp SET ID = NULL";
$query = $db->prepare($sql);
die "Error: $DBI::errstr\n" if $DBI::err;
$query->execute();
die "Error: $DBI::errstr\n" if $DBI::err;

# 3.
$sql = "INSERT INTO Tabelle SELECT * FROM tmp";
$query = $db->prepare($sql);
die "Error: $DBI::errstr\n" if $DBI::err;
$query->execute();
die "Error: $DBI::errstr\n" if $DBI::err;

$meldung = "Der Eintrag wurde kopiert.";

Für das Beispiel vielen Dank an Otto von www.sitemachine.net

09. Feb 2011
Teaser

Linux: Festplatte partitionieren / formatieren (Ext3)

Um eine Fesplatte (hier als Device “sdb1” im System) zu formatieren, nutzen Sie diesen Befehl:

mkfs -t ext3 /dev/sdb1

Damit Sie den aktuellen Status nicht anzeigen zu lassen, nutzen Sie den Parameter “-q”:

mkfs -t ext3 -q /dev/sdb1

Partitionen verwalten können Sie unter Linux (hier: Debian) mit einem der folgenden Befehle:

partman

Dieses Programm für die Partitionierung ist die erste Wahl in Debian. Diese Software kann u.a. auch die Größe von bereits bestehenden Partitionen verändern und Dateisysteme erstellen (unter Microsoft auch “formatieren” genannt). Das Zuweisen von Einbindungspunkte (Mount points) ist möglich.

fdisk

Das Programm ist das Original von Linux und eher für Linux Experten geeignet. Bitte seien Sie sehr vorsichtig, wenn Sie bestehende FreeBSD-Partitionen auf Ihrer Festplatte haben.

cfdisk

Es ist besonders für Einsteiger geeignet, da der einfach zu bedienende Partitionierer im Vollbildmodus arbeitet. Aber bitte beachten Sie auch hier, daß “cfdisk” vorhandene FreeBSD-Partitionen nicht (er-)kennt und sich deswegen Probleme ergeben können.

07. Feb 2011
Teaser

Debian: Feste IP vergeben

Um unter Linux (hier: Debian) eine feste IP zu vergeben, folgen Sie diesen Schritten:

nano /etc/network/interfaces

Passen Sie das folgende Beispiel an Ihre Umgebung an. Hier wird die feste IP Adresse “192.168.0.10” genutzt:

iface eth1 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

Um eine dynamische IP zu nutzen, ersetzen Sie die o.a. Zeilen durch diese:

iface eth1 inet dhcp