2010-11-25 4 views
5

Ich muss alle varchar zu Nvarchar, Text zu Ntext und Char zu Nchar in einigen 300. SQL-Dateien auf meiner Festplatte gespeichert aktualisieren. Diese Dateien enthalten gespeicherte Prozeduren, Trigger, Funktionen, Ansichten usw. Was ist der beste Ansatz, um dies zu erreichen.Die besten Schritte zum Ersetzen in SQL-Dateien

+0

Aufgrund der bereits in Kommentaren zu den Antworten genannten Probleme (die Möglichkeit, dass die Wörter in Literalen vorkommen), müssen Sie die Dateien analysieren, um die Typen zu identifizieren, die geändert werden müssen. – Orbling

+1

Es gibt einen .NET-Wrapper für das ausgezeichnete Scintilla-Quellcode-Editor-Steuerelement. Nachdem Sie die Sprache auf SQL eingestellt haben, gibt es eine Methode, mit der Sie die genaue syntaktische Rolle des ausgewählten Textes abfragen können, wie zB Schlüsselwort, String-Literal usw. Wenn Sie so viele Dateien haben, lohnt es sich, diese zu betrachten. – neo2862

+0

yep .. Parsing ist der Weg zu gehen ... könnten Sie einen Weg vorschlagen, wie Sie mit der Parsing-Ansatz weitergehen !!! – Chinjoo

Antwort

2

Wenn Sie wirklich den sicheren Weg wollen, müssen Sie einen Parser verwenden, der die Struktur tatsächlich versteht und nur solche Ereignisse ersetzt, die übereinstimmen.

Ich bin mir nicht sicher, ob es sich lohnt zu tauchen, aber Sie könnten selbst etwas programmieren. Sie könnten versuchen zu sehen, ob ein Opensource-T-SQL-Parser mit Ihren Dateien umgehen kann. man ist Teil der Opensource bsn ModuleStore versioning toolset.

0

.sql Dateien sind nichts weiter als Textdateien. Ich würde durch die Dateien iterieren und diese Zeichenfolge beim Parsen ersetzen.

+0

Was passiert, wenn eine Stringkonstante das Wort "text" enthält? Ziemlich häufig meiner Meinung nach. Sie werden auch keine internen Kommentare ersetzen wollen. Sie brauchen etwas Syntax-bewusster als einfaches Suchen & Ersetzen. – neo2862

+0

Es kann auch Spaltennamen namens Text geben. in diesem Fall sollten Sie diese auch nicht ersetzen. – Chinjoo

+0

Finden Sie heraus, wie Sie sicherstellen können, dass die richtige Instanz von 'text' ersetzt wird. Angenommen, Sie haben beispielsweise eine "CREATE TABLE" gefunden, können Sie wahrscheinlich feststellen, dass der dort gefundene Text ein Datentyp ist. Ansonsten ist es für nur 300 Dateien möglicherweise nicht geeignet und Sie sollten es besser manuell machen, während Sie manuell 'Suchen ... Ersetzen' durchführen. –

Verwandte Themen