2010-03-12 34 views
3

我有一個「稍微」大的SQL腳本保存爲文本文件。它總計爲8.92GB,所以它有點像野獸。編輯一個9GB的.sql文件

我必須做一些搜索並替換這個文件(具體地說,將所有的NOT NULL改爲NULL,所以所有的字段都可以爲空),然後執行這個惡夢的事情。有沒有人有任何建議可以做到這一點的文本編輯器?

我可以看到解決問題的另一種方法是編寫一個程序,它讀取一個塊,對我需要的東西進行替換,然後將其保存到一個新文件中,但我寧願使用一些標準的做法。

它也沒有解決在SQL Server Management Studio來執行該死的東西打開了野獸的問題...

任何想法?

感謝, 埃裏克

+2

您可以使用SQL Server BCP命令行實用程序來執行的塊該文件,你不可能在SQL管理器中加載所有的東西。在我的系統上,bcp.exe位於C:\ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \中。 – sipwiz 2010-03-12 10:48:41

回答

6

sed專爲這種工作而設計。

sed -e 's/\(NOT\)\? NULL/ NOT NULL/g' <input.sql> output.sql 

sedavailable on Windows

編輯:我修改了我的聲明,以避免當輸入已經包含NOT NULL時產生NOT NOT NULL

+0

完美(除了我想將NOT NULL更改爲NULL,而不是其他方式)。謝謝! – 2010-03-12 11:52:55

+0

有趣的是,oracle導出文件也是一個流格式(即使它們是二進制文件),所以你可以使用sed來對它們執行搜索/替換操作。 – ConcernedOfTunbridgeWells 2010-03-12 12:31:38

+0

@CEROQ:哎呀,我的壞。但其他方式更容易,所以我會保持原樣。 – 2010-03-12 12:32:50

0

您可以使用,而不是將它們映射加載到內存中的文件的編輯器。像UltraEdit或Notepad ++,我相信還有更多。

這仍然很慢,但功能非常強大。

1

使用sed或簡單地perl -pne 's/foo/bar/' file.sql > newfile.sql(foo將被替換爲小節)。

對於裝載SQL,使用OSQL.EXE應該是在c的地方:\ Program Files文件... \ SQL服務器\ BIN

0

你應該考慮用perl。它進行了原地文本替換。使用它作爲

perl -pie "s/ NOT NULL/ NULL/g" hugefile.sql 
0

小心那個斧頭尤金......你不想影響任何WHERE子句應該保持NOT NULL