如何使用 R 提取 SQL 文件的内容?

2023-12-11

我的一位同事的文件夹/目录充满了sql声明。他也每天更新该文件夹。我想记录这些sql供期货同事发言。然而,我正在寻找一种“自动化”该过程的方法。 我想过用crontab每周一次并运行R-Markdown文件,自动更新现有的R-Markdown file.

我的做法如下:

path = "c:/SQL_files/"
out.file<-""
file.names <- dir(path, pattern =".sql") # here I changed `.txt` to `.sql`
for(i in 1:length(file.names)){
file <- read.csv2.sql(file.names[i],header=TRUE, sep=";",    stringsAsFactors=FALSE)
  out.file <- rbind(out.file, file)
}


# That second approach comes very close, but just generates a `.txt` for the first
#`.sql` file in the directory with the error:

   Error in match.names(clabs, names(xi)) : 
   names do not match previous names 

文件所在位置:

 [1] "c:/SQL_files/first.sql"                                            
 [2] "c:/SQL_files/second.sql"     

 path = "c:/SQL_files/"
 out.file<-""
files <- list.files(path=path, pattern="*.sql", full.names=T, recursive=FALSE)
for(i in 1:length(files)){
  file <- read.table(files[i],header=TRUE, sep=";", stringsAsFactors=FALSE)
  out.file <- rbind(out.file, file)
}

The loop它提取的内容.sql似乎根本没有捕获内容(在第一个示例中)或仅捕获目录中第一个文件的内容(第二个示例)。所以我的问题。有没有办法从a中提取内容SQL Text File (.sql)?这可能会导致.txt/.Rmd如下:(但不是必须):

第一个循环的输出:my_sql_statement.sql

第二个循环的输出:Select * From Data


此 RMD 文件生成一个 markdown/HTML 文档,列出一些元数据和所有指定文件的内容:

---
title: "Collection of SQL files"
author: "SQLCollectR"
date: "`r format(Sys.time(), '%Y-%m-%d')`"
output: 
  html_document: 
    keep_md: yes
---

```{r setup, echo = FALSE}
library(knitr)
path <- "files/"
extension <- "sql"
```

This document contains the code from all files with extension ``r extension`` in ``r paste0(getwd(), "/", path)``.

```{r, results = "asis", echo = FALSE}
fileNames <- list.files(path, pattern = sprintf(".*%s$", extension))
fileInfos <- file.info(paste0(path, fileNames))

for (fileName in fileNames) {
  filePath <- paste0(path, fileName)
  cat(sprintf("## File `%s` \n\n### Meta data \n\n", fileName))
  cat(sprintf(
    "| size (KB) | mode | modified |\n|---|---|---|\n %s | %s | %s\n\n", 
    round(fileInfos[filePath, "size"]/1024, 2), 
    fileInfos[filePath, "mode"],
    fileInfos[filePath, "mtime"]))
  cat(sprintf("### Content\n\n```\n%s\n```\n\n", paste(readLines(filePath), collapse = "\n")))
}

```

所有的工作都在for循环遍历所有文件path其名字结尾为extension。对于每个文件,都会打印一个包含“元数据”的表格,然后是实际的文件内容。使用检索元数据file.info并由文件大小、模式和最后修改时间戳组成。

The cat(sprintf(...包含 markdown 的构造使代码看起来很复杂,但事实上它相当简单。

样本输出

使用带有 SQL 语句的 SQL 文件这个答案,上面的 RMD 文件生成以下输出(使用 HTML 作为输出格式):

Sample output

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 R 提取 SQL 文件的内容? 的相关文章

随机推荐