[英]Using vim on Windows to parse a .sql file
对于常规的记事本编辑器,包括用于各种视图和表的CREATE命令在内的“我的生成脚本” SQL文件太大。 我正在使用vim
。 但是,每个字符之间都有一个^@
。 因此, CREATE TABLE
如下所示:
^@C^@R^@E^@A^@T^@E^@ ^@T^@A^@B^@L^@E
这正常吗? 基本上,我只希望在此文件中CREATE
几个CREATE
脚本。 特别是,我正在寻找包含[dbo].[v_agent
任何行。 我了解grep
命令,但是我正坐在等待命令运行,想知道我是否在浪费时间。
现代MS Windows程序和实用程序(例如SQL Server)使用UTF-16 LE(小写)字符编码创建文本文件。
默认情况下,Unix实用程序(例如grep
不会将此类文件解释为文本文件,而是将其视为二进制文件(字节流)。
如果您正在运行Unix模拟器(例如Cygwin),则可以使用iconv
工具将其转换为其他编码,例如UTF-8,例如
iconv -f utf16le -t utf8 in.sql > out.sql
由于您已经声明在Vim中已打开文件,因此可以使用以下Vim命令重新打开该文件:
:set encoding=utf8
:e ++encoding=utf16le
第一个命令用于确保在将文件加载到Vim缓冲区时可以正确表示Unicode字符。 不需要,因为默认编码通常设置为UTF-8。
Vim不会自动将文件识别为UTF-16LE编码,因此第二条命令重新打开该文件进行编辑; 您必须告诉它应该使用哪种字符编码来解释构成文件的字节流。 有关更多信息,请参见http://vim.wikia.com/wiki/Reloading_a_file_using_a_different_encoding
现在,文件已正确加载到Vim缓冲区中,您可以将fileencoding
选项设置为您想要与之一起保存文件的任何字符编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.