使用 SQL 向 MS Access 中的多个表添加列

Posted

技术标签:

【中文标题】使用 SQL 向 MS Access 中的多个表添加列【英文标题】:Adding a column to multiple tables in MS Access using SQL 【发布时间】:2013-11-05 15:49:13 【问题描述】:

我有一个包含近 200 个表的 Access 数据库。我想重命名其中许多的字段(以便在我分析 R 中的数据时更容易)。我发现您不能简单地重命名 Access 中的字段,而必须通过添加新列、传输数据、然后删除旧列的艰难方法来完成。

有没有办法使用 SQL 一次对多个表(或多个表和列)执行此操作?

我试过这个:

ALTER TABLE * FROM MSysObjects ADD COLUMN colname NUMBER

还有这个:

ALTER TABLE table1, table2, table3... ADD COLUMN colname NUMBER

但似乎都不起作用。

这可能吗?有谁知道如何编码?

【问题讨论】:

【参考方案1】:

“有没有办法使用 SQL 一次对多个表(或多个表和列)执行此操作?”

没有。这超出了 Access SQL 的能力。您将需要执行一系列语句,每个语句只能更改一个表。

您可以创建一个 VBA 过程来构建和执行这些语句。但是,如果您愿意使用 VBA,请考虑通过 DAO 对象模型简单地重命名列。

下面是即时窗口中的一个简单示例:

? CurrentDb.TableDefs("tblFoo").Fields("some_text").Name
some_text
CurrentDb.TableDefs("tblFoo").Fields("some_text").Name = "some_text2"
? CurrentDb.TableDefs("tblFoo").Fields("some_text2").Name
some_text2

【讨论】:

谢谢,汉斯。是否可以在实际的 SQL 程序(例如 mysql、SQLite)中做我想做的事情? 或许可以,但我无法为这些人提供任何帮助。 @Paul 回复:“是否有可能在 [其他一些数据库] 中做我想做的事?” - 一般来说,没有。至少我不知道有任何数据库提供“全局更新”功能来更改数据库对象的结构。 (顺便提一下,如果您觉得有帮助,您可以accept 一个答案。接受的答案可以帮助其他人认识到您的问题已得到解决。)

以上是关于使用 SQL 向 MS Access 中的多个表添加列的主要内容,如果未能解决你的问题,请参考以下文章

MS Access SQL 多个 JOIN 和 WHERE 子句

MS Access 2013 中的嵌套 SQL 联接

如何使用 Pass-through 查询从 MS Access 前端向 sql 表输入数据?

MS Access 中通过 ODBC 连接 MS SQL 表的查询非常慢

使用 C# windows 窗体向 Ms Access 数据库插入新记录时出现语法错误

多个 MS Access 前端连接到单个远程 SQL Server 后端