繁体   English   中英

在Windows上使用vim解析.sql文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM