Datagrip 的导入 CSV 运行的查询是啥?

Posted

技术标签:

【中文标题】Datagrip 的导入 CSV 运行的查询是啥?【英文标题】: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
)

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

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

【问题讨论】:

【参考方案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 运行的所有个查询。

【讨论】:

以上是关于Datagrip 的导入 CSV 运行的查询是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Datagrip 从 CSV 文件导入 VARRAY

将 .csv 文件导入 Datagrip?

使用 Datagrip 导入 csv(带有标识列的表)

如何在 Datagrip 中使用 PostgreSQL 查询导出附加 CSV 文件?

DataGrip 可以遍历 CSV 文件吗?

在 DataGrip 错误消息中,“位置”是啥意思?