Datagrip的导入CSV会运行哪些查询?

时间:2018-12-10 06:34:09

标签: sql-server sql-server-2012 jetbrains-ide datagrip

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

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

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

通过单击DDL PREVIEW选项卡,我可以看到以下代码段:

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

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

这似乎太神奇了,我想学习更多。

2 个答案:

答案 0 :(得分:2)

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

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 Server的计算机上创建。不要从本地计算机添加路径。另外,您可以根据需要添加其他要捕获的信息。

创建此会话后,可以使用以下查询启动/停止它:

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节点。不要让会话运行超过所需的时间。

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

答案 1 :(得分:2)

您可以在完全SQL日志中观察由DataGrip运行的所有查询。

enter image description here