使用 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 子句
如何使用 Pass-through 查询从 MS Access 前端向 sql 表输入数据?
MS Access 中通过 ODBC 连接 MS SQL 表的查询非常慢