2

问题:

一般来说,我需要将 .CSV 文件抽象成什么来“运行 SQL 语句”?

我想我可以为下面的“问题”的第 1 步编写迭代循环,但我对如何执行第 2 步一无所知。

问题:

我在大学办公室工作,那里有一个通宵脚本(不是我写的)梳理大学的数据库,并为我需要在第二天通过“邮件合并”发送的信件生成 .csv 文件。它将这些 .csv 文件保存到我有权访问的服务器文件夹中。

这样做的技术是有限的,它会为每个入学学期生成一个不同的 .csv 文件。 (这似乎与自动化软件在梳理大学数据库时如何知道要注意哪些录取条款有关。)

但是,我的 MS Word 邮件合并文档不需要这种 .csv 文件的分隔,因为“录取期限”也是 .csv 文件本身的一个字段。我需要的任何变化都可以通过条件逻辑和字段插入来完成。

.csv 文件的分离使我为相同的总体思路维护多个冗余 Word 文档,每个术语只有一个。每次我们过渡到专注于一组新学期时,都会感到头疼。我用 Access 解决方案解决了这个问题(见下文),但现在IT维护起来很头疼。

不幸的是,我无权更改通宵脚本的输出,所以我只能使用现有的 .csv 文件。

我想做的是编写一个程序,它存在于我的台式电脑或我们的服务器上,并且:

  1. 遍历适用的服务器文件夹中的每个文件,确定它是否符合某些文件名标准并且具有非空内容
  2. 将与步骤 1 匹配的 .csv 文件抽象为可以执行 SQL 的抽象
  3. 为每个匹配的 .csv 文件对“SELECT * FROM [.csv 文件的抽象]”执行 SQL “UNION ALL”语句
  4. 将步骤 3 的结果作为新的“合并”.csv 文件写入我们的服务器(我将指向该服务器)邮件合并文件。
    • (另外,我想自动化我的程序以按特定时间表执行,这样会影响我的工具选择。)

到目前为止,我已经使用 MS Access 执行步骤 3 和 4(然后当打开邮件合并文件时,我让 Word 直接从 .mdb 文件中读取)。

但是,当我们想要专注于一组不同的术语时,这确实令人头疼。我必须手动更改 .mdb 所查看的 .csv 文件,因为我得到的 .csv 文件的文件名中内置了准入术语。

每 6 个月,我需要几个小时将特定的新 .csv 文件导入新的“链接表”,重新指向联合,清理我不再需要的旧“链接表”等。

我宁愿让电脑来完成这项任务,即使它必须每天都做。:-)

4

2 回答 2

0

这是一个更新,因为我已经了解了更多关于计算机的知识,我希望可以帮助以下人群:

1)我尝试用极其简单的语言回答我自己的问题:SQL 是一个“香草”概念,说明了一系列编程语言的实现应该是什么。包含理解 SQL 命令功能的最常见类型的软件称为“关系数据库”。“关系数据库”意味着它自己的数据微型文件系统。因此,您可能希望将数据从位于您自己计算机文件系统上的“.CSV”文件中复制出来,并将其粘贴到“关系数据库”的文件系统中。(而且由于这两个文件系统如此不同,最典型的“粘贴”方法是通过 SQL 命令。)

2)也就是说,世界上有一些软件使用位于您自己计算机文件系统上的“.CSV”文件作为“他们的”文件系统(他们没有自己的文件系统)并且可以“理解”SQL -命令。这些很好,因为 ."CSV" 文件通常是与 SQL 命令要操作的“关系数据库”中的“表”的抽象概念类似的数据结构。Microsoft Log Parser 就是这样一款适用于 Windows 的软件。(但请注意,它并不理解所有“普通”SQL 命令。)

3)为了解决我写这个问题时想到的问题,我将 Microsoft Log Parser 放在我们的 Windows 服务器上并编写 Windows shell 脚本来执行我希望它在各种“.CSV”文件上执行的类似 SQL 的命令也住在我们的 Windows 服务器上。

我同事的部分日常工作依赖于我原帖的数据转换。我刚刚在他的说明中写了“现在双击'____.cmd'......”。这是一个kludge,但它的工作!

4) SQL 并不是唯一有利于处理类表数据的编程命令集。例如,Python 有一个“csv”包。与 Log Parser 的命令相比,它不像 SQL,但它可以完成 Log Parser 无法完成的一些任务,例如右填充字段内容。

Python 有一个“便携式 Python”产品,您可以将其放在 Windows 文件系统(无论是您的 PC 还是某些 Windows 服务器空间)上,它允许您编写 Python 程序并针对该 Windows 文件系统上的“.CSV”文件运行它们。这种免安装环境(如 LogParser)可以帮助您针对“.CSV”文件“组合”数据处理任务。 (“Kludges”写起来很有趣,通常在短期内有用,但不推荐用于安全性、可维护性、规模等问题的项目——你已经被警告过!)

于 2014-03-21T00:23:08.017 回答
0

您可以SSIS用于此目的

创建一个扫描文件的包,并将它们导入SQL数据库

执行您需要的数据转换

将转换后的数据导出到另一个CSV文件

您可以将此包作为手动触发的作业或按计划运行

于 2013-10-21T03:26:40.813 回答