Datagrip 的导入 CSV 查询 运行 是什么?

What are the queries run by Datagrip's import CSV?

我正在使用 DataGrip 的导入 CSV 到数据库选项,如下所示:

https://www.jetbrains.com/datagrip/features/importexport.html

但我想了解 DataGrip 运行 针对我的数据库的查询是什么。我正在使用 MS SQL SERVER 2012.

通过单击“DDL 预览”选项卡,我可以看到以下片段:

CREATE TABLE VESSEL_POSITIONS.dbo.[SOFS_T-AIS]
(
    imo INT,
    MESSAGE_SOURCE TEXT,
    MSG_SRC_COUNT INT
)

但我想了解实际插入是如何完成的。

这似乎有点太神奇了,我想了解更多。

您需要使用 Extended Events session, or using Profiler 捕获执行的语句。推荐的方法是使用扩展事件。您需要创建一个会话并指定您对哪些事件感兴趣,以及将捕获的数据存储在何处。在 SSMS 中打开一个查询 window 和 运行 这个查询:

CREATE EVENT SESSION [Capture_Datagrip_Queries]
ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
    ACTION 
    (
            sqlserver.sql_text
    )
    WHERE 
    (
            database_id = 9
    )
)
ADD TARGET package0.event_file
(
    SET filename = 'D:\XE\Datagrip.xel',
        max_file_size = 5,
        max_rollover_files = 1
)

将数据库的 database_id 放在查询 运行 的位置(在我的示例中为 9)。您可以通过执行此查询 select db_id(N'MyDatabaseName') 来获取它。这将通过仅捕获相关信息来减少开销,但 where 部分是可选的。另请记住,该文件将在 SQL 服务器 运行s 所在的计算机上创建。不要从本地计算机添加路径。此外,如果需要,您可以添加要捕获的其他信息。

创建此会话后,您可以 start/stop 使用这些查询:

ALTER EVENT SESSION [Capture_Datagrip_Queries] ON SERVER STATE = START
ALTER EVENT SESSION [Capture_Datagrip_Queries] ON SERVER STATE = STOP

或者在 SSMS 中使用对象资源管理器中的 Management \ Extended Events \ Sessions 节点。不要离开会话 运行ning 超过需要的时间。

您可以在 SSMS 中看到结果 - 会话下有一个 package0.event_file 节点。双击查看采集到的数据。

您可以观察 所有 查询 运行 DataGrip 的完整 SQL 日志。