首页 > 解决方案 > 在 Applescript/Automator 中将 .csv 表转换为数据库

问题描述

所以我有一个 .csv 表,其中包含一些我想传输到数据库中的内容,最好是 .db 文件。我搜索了 Applescript 和 Automator 和 Applescript,发现了一些东西:

  1. 所有 macOS 系统上都预装了一个名为Database Events. 此应用程序可用于创建新数据库,但是,我不知道如何在不读取数千个单元格的情况下在 .csv 表和新创建的数据库之间传输数据。
  2. 在 Automator 中,有一个名为 的操作Convert CSV to SQL,这听起来就像我正在搜索的确切内容,但是,无论我如何输入数据(该操作说它需要文本、文件夹/文件),它都不会返回任何内容。

有什么我错过的吗?

标签: databasecsvapplescriptautomator

解决方案


假设现有的 sqlite 数据库包含一个带有字段的表,以下自动化应用程序应该允许您将逗号分隔的文本输入其中。或者,它可以通过在顶部添加“获取项目”操作之一来呈现为工作流。此示例使用具有两个字段的表。

  • 合并文本文件——将删除的 csv 中的文本传递到下一个操作。应该允许多个删除的文件。

  • 将 CSV 转换为 SQL——注意这不会执行任何操作。它只是组装 sql 命令。这里使用了三个元素:之前、每行、之后。“每行”应包括表名和括号内的字段名。据推测,通过添加变量,您可以添加更多字段。编辑以适合您的目的。

    开始交易;

    INSERT INTO people(surname, givenname) values("%{1}@","%{2}@");

    结束交易;

  • 查看结果——这在测试期间可能会有所帮助,但另外,它应该有助于纠正先前操作的一些自动机问题。

  • 变量的设置值——存储上面生成的语句(例如“SQL语句”)

  • 询问 Finder 项目——这个动作对我来说很不稳定。我没有收到任何文本提示,并且它经常重复文件提示(我转义了第二个实例)。类型应该是文件。在这里选择数据库。选中“忽略此操作的输入”。如果您的数据库从不更改,您可以替换为“获取指定...”。

  • 设置变量值——创建一个新变量来存储数据库引用(例如“SQL 数据库”)

  • 获取变量的值——获取之前存储的 SQL 语句。选中“忽略...”。

  • 应用 SQL - 数据库应设置为数据库变量集以上两个操作(例如“SQL 数据库”)。输出应该是纯文本。

上面(和下面)来自制作一个独立的应用程序来将数据从 CSV 添加到数据库。请注意,无论出于何种原因,那里的代码块都包含页面的 html 代码,因此需要将其剥离(如上所述)。该页面非常值得一读。

除了上述之外,我还使用一个基本的工作流程在数据库上执行各种简单的 sql 命令。

  • 获取指定的查找器项目——将其指向数据库文件
  • 执行 SQL——我在这里粘贴我希望使用的命令
  • 查看结果——看看这里发生了什么。

我在“执行”操作中使用的命令如下:

  • 创建表人(姓氏varchar,给定名varchar);-- 创建一个包含两个字段的表
  • 从人中选择*;-- 列出表中的所有记录
  • 从人中删除;-- 删除表中的所有记录

虽然这些事情可以在终端或专用应用程序中完成,但为此我更喜欢留在 automator 中。


推荐阅读