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 运行的查询是啥?的主要内容,如果未能解决你的问题,请参考以下文章