JavaScriptを有効にしてください

【VSCode】SQLTools を使用してSQLを自動的に整形する

 ·  ☕ 2 分で読めます

【VSCode】SQLTools を使用してSQLを自動的に整形する

VSCode でSQLを自動的に整形するためのメモ

1. SQLTools インストール

まずはSQLToolsをダウンロードします。
SQLTools - Visual Studio Marketplace

DBドライバを入れておけばよりSQLファイルを直接DBに接続して実行することが可能です。
SQLTools #Supported Drivers

2.setting.json

SQLToolsの設定を行う。
SQLTools - Settings Properties

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
    // SQLTools接続情報
    "sqltools.connections": [
    {
        "name": "MySQL",
        "server": "localhost",
        "driver": "MySQL",
        "port": 3306,
        "database": "test_db",
        "username": "root",
        "askForPassword": false,
        "password": "root",
        "connectionTimeout": 15
    }
    ],
    // SQLTools フォーマット
    "sqltools.format": {
        "language": "sql",
        "indentSize": 2,
        "reservedWordCase": "lower",
        "linesBetweenQueries": 1
    },
    // フォーマッター設定
    "[sql]": {
        "editor.defaultFormatter": "mtxr.sqltools"
    },
    // 保存時フォーマット設定
    "editor.formatOnSave": true
}

3. SQLを自動整形

どうのように整形されるか試してみます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT a, b FROM t CROSS JOIN t2 on t.id = t2.id_t;

SELECT DISTINCT name, ROUND(age/7) field1, 18 + 20 AS field2, 'some string' FROM foo;

-- here is a comment
# another comment

UPDATE "log" SET "time" = '2020-02-01 09:00:00' WHERE "id" = 1 RETURNING "time";

CREATE TABLE foo (id INTEGER PRIMARY KEY,name VARCHAR(200) NOT NULL);

ALTER TABLE supplier MODIFY supplier_name char(100) NOT NULL;

select t.column1 Кириллица_cyrilic_alias
  , t.column2 Latin_alias
from db_table t
where a >= some_date1  -- from
and a <  some_date2  -- to
and b >= some_date3  -- and
and b <  some_date4  -- where, select etc.
and 1 = 1;

保存後は以下のようになります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
select a,
    b
from t
    cross join t2 on t.id = t2.id_t;
select distinct name,
    ROUND(age / 7) field1,
    18 + 20 as field2,
    'some string'
from foo;
-- here is a comment
# another comment
update "log"
set "time" = '2020-02-01 09:00:00'
where "id" = 1
returning "time";
create table foo (
    id INTEGER primary key,
    name VARCHAR(200) not null
);
alter table supplier
modify supplier_name char(100) not null;
select t.column1 Кириллица_cyrilic_alias,
    t.column2 Latin_alias
from db_table t
where a >= some_date1 -- from
    and a < some_date2 -- to
    and b >= some_date3 -- and
    and b < some_date4 -- where, select etc.
    and 1 = 1;

参考情報

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer