database - 在 Applescript/Automator 中将 .csv 表转换为数据库
问题描述
所以我有一个 .csv 表,其中包含一些我想传输到数据库中的内容,最好是 .db 文件。我搜索了 Applescript 和 Automator 和 Applescript,发现了一些东西:
- 所有 macOS 系统上都预装了一个名为
Database Events
. 此应用程序可用于创建新数据库,但是,我不知道如何在不读取数千个单元格的情况下在 .csv 表和新创建的数据库之间传输数据。 - 在 Automator 中,有一个名为 的操作
Convert CSV to SQL
,这听起来就像我正在搜索的确切内容,但是,无论我如何输入数据(该操作说它需要文本、文件夹/文件),它都不会返回任何内容。
有什么我错过的吗?
解决方案
假设现有的 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 中。
推荐阅读
- system-verilog - 从 SystemVerilog 队列中随机选择项目
- css - 在一个父 Div 内将 flex-column 项目左右对齐
- python - 如何使用子进程在 Python 中运行带有文件输入/输出的可执行文件?
- go - Go build: cgo fork/exec 权限被拒绝错误
- android - 如何从 Kotlin 中的另一个类重新分配变量?
- javascript - 如何在 JavaScript 中将列表转换为 JSON?
- javascript - 在 React 中处理 Themoviedb 的分页请求
- python - 同时从多个请求更新同一个数据库对象
- r - R CMD 默认为 Linux 终端中的 R 版本选择屏幕
- vue.js - 如何为 vue-cli-service 设置 http 标头?(SharedArrayBuffer)