Ich kann Dir zwar keine Lösung bieten, aber Dein Skript scheint für MS SQL gedacht zu sein. Verwendest Du MySQL oder MS SQL?
Hallo!
Ich habe den unglaublich dummen Fehler gemacht, vor veöfffentlichung meiner Webseite eine test-url zu nehmen (www.beta.blub.net).
In der Datenbank müsste das jetzt des öfteren editiert werden.
Es würde wochen dauern, wenn ich jede Tabelle manuell durchsuche.
Ich habe bereits diverse scripts gefunden, allerdings gibt es immer diverse Fehlermeldungen.
Zum Beispiel "#1193 - Unknown system variable 'NOCOUNT'"
Hier das script:
Code:-- PREPARE SET NOCOUNT ON -- VARIABLES DECLARE @tblName NVARCHAR(150) DECLARE @colName NVARCHAR(150) DECLARE @tblID int DECLARE @first bit DECLARE @lookFor nvarchar(250) DECLARE @replaceWith nvarchar(250) -- CHANGE PARAMETERS SET @lookFor = QUOTENAME('beta.LINK.net') SET @replaceWith = 'LINK.net' -- TEXT VALUE DATA TYPES DECLARE @supportedTypes TABLE ( xtype NVARCHAR(20) ) INSERT INTO @supportedTypes SELECT XTYPE FROM SYSTYPES WHERE NAME IN ('varchar','char','nvarchar','nchar','xml') --INSERT INTO @supportedTypes SELECT XTYPE FROM SYSTYPES WHERE NAME IN ('text') -- ALL USER TABLES DECLARE cur_tables CURSOR FOR SELECT SO.name, SO.id FROM SYSOBJECTS SO WHERE XTYPE='U' OPEN cur_tables FETCH NEXT FROM cur_tables INTO @tblName, @tblID WHILE @@FETCH_STATUS = 0 BEGIN ------------------------------------------------------------------------------------------- -- START INNER LOOP - All text columns, generate statement ------------------------------------------------------------------------------------------- DECLARE @temp VARCHAR(max) DECLARE @count INT SELECT @count = COUNT(name) FROM SYSCOLUMNS WHERE ID = @tblID AND XTYPE IN (SELECT xtype FROM @supportedTypes) IF @count > 0 BEGIN -- fetch supported columns for table DECLARE cur_columns CURSOR FOR SELECT name FROM SYSCOLUMNS WHERE ID = @tblID AND XTYPE IN (SELECT xtype FROM @supportedTypes) OPEN cur_columns FETCH NEXT FROM cur_columns INTO @colName -- generate opening UPDATE cmd SET @temp = ' PRINT ''Replacing ' + @tblName + ''' UPDATE ' + @tblName + ' SET ' SET @first = 1 -- loop through columns and create replaces WHILE @@FETCH_STATUS = 0 BEGIN IF (@first=0) SET @temp = @temp + ', ' SET @temp = @temp + @colName SET @temp = @temp + ' = REPLACE(' + @colName + ',''' SET @temp = @temp + @lookFor SET @temp = @temp + ''',''' SET @temp = @temp + @replaceWith SET @temp = @temp + ''')' SET @first = 0 FETCH NEXT FROM cur_columns INTO @colName END PRINT @temp CLOSE cur_columns DEALLOCATE cur_columns END ------------------------------------------------------------------------------------------- -- END INNER ------------------------------------------------------------------------------------------- FETCH NEXT FROM cur_tables INTO @tblName, @tblID END CLOSE cur_tables DEALLOCATE cur_tables
Ich kann Dir zwar keine Lösung bieten, aber Dein Skript scheint für MS SQL gedacht zu sein. Verwendest Du MySQL oder MS SQL?
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
MySQL...
Ich wusste das nicht. Ich habe keine Ahnung von sowas...![]()
UPDATE
`tabellen_name`
SET
spalte = REPLACE(spalte, 'suche_string','ersetze_string');
Fertig ^^
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Das ist doch das Problem. Dann muss ich ALLE Tabellen einzeln durchleuchten. Jede Spalte (das sind etwa 50 Tabellen mit je zwischen 2-50 Spalten!).
Gibt es da nichts...![]()
Die URLs stehen doch nicht in jeder Tabelle und in jeder Spalte drin ...?
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Nein, aber an sehr vielen Stellen.
Es währe nochml extrem viel Arbeit ausfindig zu machen, wo die stehen.
Du könntest mit show tables an die Namen der Tabellen und mit show columns an die Namen der Spalten kommen. Mit diesen Daten kannst Du dann Deine Update-Statements generieren. Entweder php-skriptseitig oder Du nutzt die Daten als Basis für Dein manuell zu erstellendes Skript.
Wenn Du aber eine DB mit 50 Tabellen aufgebaut hast, dann sollte das für Dich kein Problem sein.
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Vielen Dank!
Ich werde es jetzt gleich so probieren.
Aber ginge es nicht auch die DB als eine Textdatei oder was auch immer zu exportieren und mit PSPad oder so die Sachen zu ersetzen und dann das ganze wieder zu importieren?
Klar, das geht natürlich auch.
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
Öh. Und warum macht man das dann nicht so? Ist doch viel einfacher.
Kannst du mir sagen, wie man das exportiert?
Weil Du so einen Stand exportierst, also quasi einfrierst und dann wieder importierst. In der Zwischenzeit kann sooo viel passiert sein, was Du dann verlieren würdest
Ne, im Ernst, es kommt halt auf die Datenmengen an, manchmal macht es halt keinen Sinn alles zu exportieren um an ein paar Stellen was zu ändern. Vorausgesetzt man kennt sein Datenbank.
Einen Export kannst Du direkt in phpmyadmin machen.
Grüße vom Griechen,
Cybergreek!
everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht
Auf der Seite passiert noch nicht viel (hatte sie ja bisher zum erstellen erstmal auf einer sub-domain), also wird's schon klappen.
Ich danke dir![]()
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)