将 SQL 查询结果转换为 LaTeX 表的好方法有哪些?

将 SQL 查询结果转换为 LaTeX 表的好方法有哪些?

背景

我正在本地 SQL 服务器上对大型数据集进行数据分析。该分析的很大一部分是表格内容:频率表等,它们总结了关键变量的各个方面。

我所有的写作都是在 LaTeX 环境 (Overleaf,用 XeLaTeX 编译) 中完成的,这意味着我经常将内容从 SQL (以及从 R,我在其中进行分析的其他部分) 带入 TeX 文档中。

问题

在很多情况下,我会尝试构建我的 SQL 查询,以便它们能够准确地找到我正在寻找的表。

我对社区的问题是:你们有没有喜欢的、简洁的或首选的方法将 SQL 查询结果转换为 LaTeX 表?

我尝试过的方法

以一个简单的 Postgres 数据库为例,如下所示:

D b

假设我想要一个简单的表格,将每个错误的数量加起来id

select id as "ID", sum(errors) as "Sum of errors"
from d
group by id

在 DataGrip 输出查看器中产生类似这样的结果:

dg_result

一切都很好,但如何将其放入 LaTeX 中?

我尝试过的主要方法是实用的,但很笨重:

  1. 我使用输出窗口旁边的 Datagrip 的“导出数据”功能将表复制到剪贴板,如下所示:

剪贴板

  1. 然后我将其粘贴到这个网站,Latex 表格生成器,然后输出一些 LaTeX 代码(在我告诉网站在表格单元格周围添加边框之后):
\begin{table}[]
\begin{tabular}{|l|l|}
\hline
ID                                            & Sum of errors                                   \\ \hline
\begin{tabular}[c]{@{}l@{}}a\\ b\end{tabular} & \begin{tabular}[c]{@{}l@{}}56\\ 12\end{tabular} \\ \hline
\end{tabular}
\end{table}

在我的文档中产生了一个很好的小结果:

结果

所以就像我说的,这些都是功能性的,但由于我是一个熟练但最终还是新手的 SQL 和 LaTeX 用户,我想问问社区是否有更好或更快的方法。我认为将这些表输出为 CSV 格式可能会奏效,但 TeX 环境中与 CSV 相关的软件包的情况令人困惑。

(仅供参考:我在 StackOverflow 上发布了此查询的一个版本。希望能够尽可能广泛地传播。)

答案1

因为您使用 R,而 R 可以执行 SQL 查询,并且 R 可以生成 LateX 表,并且knitr可以直接在 R noweb (.Rnw) 文件中的 Latex 源内制作表:

测试.Rnw:

\documentclass{article}
\begin{document}
<<test,results='asis',echo=FALSE>>=
xtable::xtable(head(sqldf::sqldf("SELECT * FROM iris")), caption="SQL query.")
@
\end{document}

姆韦

注意:这可以在 Rstudio 中轻松编译(使用 pdflatex、xelatex 或 lualatex,随你便),但在 Overleaf 中无法工作,至少因为(a)sqldfOverleaf 中未安装 R 包,并且(b)本站点中 LateX+R 文件的文件扩展名必须是.Rtex,而不是.Rnw

我确信还有其他 R 方法可以连接到 SQL 数据库,也许其中一些可从 Overleaf 获得,但我还没有探索过这种方法。

相关内容