如何修复 Postgres `COPY` 命令的 VSCode 语法突出显示

Mos*_*atz 6 postgresql syntax-highlighting visual-studio-code

我有很多.sql来自 PostgreSQL 数据库的文件。

(为了完整起见,它们是使用pg_extractor生成的,作为在 git 中签入数据库骨架的一种方式。有数百个 PL/pgSQL 函数也需要作为应用程序代码的一部分进行签入。开发人员致力于在其本地数据库服务器上运行函数,然后将其函数更改签入 git。)

在这些文件中,数据使用 PostgreSQL 命令表示COPY

例如我们的骨架数据库有如下表和数据:

CREATE TABLE roles (
    id serial NOT NULL,
    name text NOT NULL,
    name_display text NOT NULL,
    order_display integer NOT NULL
);

COPY roles (id, name, name_display, order_display) FROM stdin;
1   MASTER  Master  1
2   ORGANIZATION_ADMIN  Organization Admin  2
3   REGIONAL_ADMIN  Regional Admin  3
4   BRANCH_ADMIN    Branch Admin    5
5   SECURITY_ADMIN  Security Admin  8
6   BRANCH_MANAGER  Branch Manager  6
7   BRANCH_STAFF    Branch Staff    7
8   SECURITY_OPERATOR   Security Operator   9
9   REGIONAL_MANAGER    Regional Manager    4
\.
Run Code Online (Sandbox Code Playgroud)

虽然上面的例子很简单,但有些例子要复杂得多。

我遇到的问题是当表包含带有单引号或双引号的数据时。在这种情况下,Visual Studio Code 认为标记应该打开带引号的字符串,并弄乱了文件其余部分的语法突出显示。在引用字符串的实际情况下,这不是问题,但如果某些文本包含所有格(或收缩)撇号,则会导致文件的其余部分(除非有另一个撇号)被视为引用文本。

问题是无法转义输入中的撇号,COPY因为它应该是原始值(换行符、空值、分隔符(默认情况下为制表符)和转义字符 ( \) 本身除外)。

有没有办法让 VSCode 忽略正文中的引号COPY(从语句末尾的分号COPY到正文\.结束的分号)?