【问题标题】:What are the queries run by Datagrip's import CSV?Datagrip 的导入 CSV 运行的查询是什么?
【发布时间】:2018-12-10 06:34:08
【问题描述】:

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

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

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

通过单击 DDL PREVIEW 选项卡,我可以看到以下 sn-p:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您需要使用Extended Events session 或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 节点。双击它可以查看收集到的数据。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-28
        • 1970-01-01
        相关资源
        最近更新 更多