fwrite -> Text am Anfang und am Ende ergänzen

goto;

Erfahrenes Mitglied
Hallo liebe Community,

ich habe momentan 3 .sql Datein vorliegen mit einer Größe > 8Gb. Da das öffnen dieser Dateien ewig dauert. Hab ich nach einer möglichkeit gesucht, gewünschte Inhalte einfach via fwrite einzubinden.

Problem:
In der .sql sind Backups von mehreren Datenbanken enthalten. Am Anfang und am Ende soll nun das FOREIGN_KEY_CHECKS auf 0 gesetzt werden.

Klingt einfach. Ich habe zunächst die .sql Datei mit fopen("datei.sql","c+"); geöffnet und den Datenzeiger an Anfang gesetzt. Nun dachte ich mir ich schreibe kompletten Inhalt einfach in eine Variable ( $inhalt ).

Der neue Inhalt also: SET FOREIGN_KEY_CHECKS=0; steckt in der Variable $key.

Nun habe ich beide zusammengeführt

$neuerinhalt = $key.$inhalt;


Das Problem hierbei ist aber, dass zwar die Variable $key in die Datei geschrieben wird.
Jedoch wird der Vorhandene Code in der .sql Datei einfach überschrieben.

Gibt es hierfür eine Lösung?

Viele Grüße
 
Hi

mal langsam:
Du willst 8GB Sql per PHP in einen String laden und noch was anhängen,
um es dann DB-mäßig ausführen zu lassen?
Und das soll mit fwrite passieren?

Das ist bestenfalls verrückt.

a) fwrite schreibt nichts aus einer Datei in einen String,
sondern vom String in die Datei.
Du suchst fread.

b) 8GB in einen String...viel Spaß.

c) MySQL über PHP ist langsamer als MySQL allein.

d) Vor allem bei solchen Datenmengen lohnt sich
daher ein Import über die MySQL-Programme.
 
Hallo,
ich glaube das kam falsch rüber.

Ich habe mehrere .sql Datein die > 8Gb groß sind.

In denen soll nun noch die Fremdschlüssel überprüfung auf 0 gesetzt werden.
Nicht mehr und nicht weniger.

Hier mal mein Ergebniss:
PHP:
$t = "SET FOREIGN_KEY_CHECKS=0;\n";
$t.= "SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';\n";
$t.= "SET time_zone = '+00:00';\n";


$array = file("daffta.sql");
array_unshift($array, $t);
$string = implode("", $array);
file_put_contents("daffta.sql", $string);
$inhalt = file_get_contents("daffta.sql");
file_put_contents("daffta.sql", $inhalt .= "SET FOREIGN_KEY_CHECKS=1;");

Viele Grüße
 
Zurück