Access SQL中的字段名和附加文件问题

Access SQL中的字段名和附加文件问题,sql,ms-access-2007,Sql,Ms Access 2007,好的,我在Access数据库中有将近200个表。这些表格是植物物种丰度数据,我想把它们合并成一个主数据文件。每个表包含基本相同的物种列;然而,许多单词的拼写略有不同 当我在MS Access中运行SQL查询时,它不允许我将表相互追加,因为字段名的拼写略有不同 有什么想法可以帮助你吗 我正在运行的查询是追加查询: INSERT INTO masterTable SELECT * FROM siteTable 例如,字段名之间的差异非常小 (例如,“Spp.A”与“SppA”或“SpeciesOn

好的,我在Access数据库中有将近200个表。这些表格是植物物种丰度数据,我想把它们合并成一个主数据文件。每个表包含基本相同的物种列;然而,许多单词的拼写略有不同

当我在MS Access中运行SQL查询时,它不允许我将表相互追加,因为字段名的拼写略有不同

有什么想法可以帮助你吗

我正在运行的查询是追加查询:

INSERT INTO masterTable SELECT * FROM siteTable
例如,字段名之间的差异非常小
(例如,“Spp.A”与“SppA”或“SpeciesOne”与“Species1”)

谢谢你的帮助,

Paul

为此,您需要使用vba,还需要更改我在主表中使用的列名,在我的示例中,这些列名仅为column1、column2和column3,并在几个位置设置最大列索引(我插入了一些注释,以便您可以看到需要更改的内容)

如果您通常不使用vba,请创建一个带有按钮的窗体,并为该按钮创建一个单击事件&将此代码放入其中,然后打开窗体并单击该按钮

Dim db As Database
Dim tdf As TableDef
Dim ii As Long
dim sql as String

Set db = CurrentDb()
docmd.setwarnings false

For Each tdf In db.TableDefs
    'change column list as required:
    sql = "INSERT INTO masterTable (Column1, Column2, Column3) SELECT "
    'change 2 to maximum column number - 1:
    for ii = 0 to 2
        sql = sql & tdf.Fields(ii).Name
        'change 2 to maximum column number - 1 again:
        if ii < 2 then
            sql = sql & ","
        end if
    next
    sql = sql & ")"

    docmd.runsql sql
Next
docmd.setwarnings true
Dim db作为数据库
将tdf调暗为TableDef
只要
将sql设置为字符串
Set db=CurrentDb()
docmd.setwarnings错误
对于以db.TableDefs为单位的每个tdf
'根据需要更改列列表:
sql=“插入主表(第1列、第2列、第3列)选择”
'将2更改为最大列数-1:
对于ii=0到2
sql=sql&tdf.Fields(ii).名称
'再次将2更改为最大列数-1:
如果ii<2,则
sql=sql&“
如果结束
下一个
sql=sql&“
docmd.runsql
下一个
docmd.setwarnings true
我想这应该行得通。(我希望没有语法错误,因为我还没有测试过,但逻辑并不完全是火箭科学)


希望这有帮助

您应该首先统一所有表字段名称。。。手工操作更好,真的吗?你的意思是更好的控制还是更好的努力?您是说我应该进入每个表并手动更改每个字段名?或者插入到主表(y1、y2、y3)中,从siteTable中选择x1、x2、x3;对于所有站点表,每次使用不同的x1、x2、x3:相同的工作量?如果站点表中的字段数量相同,顺序相同,即使名称不同,也会更简单。我认为这将需要更多的工作。不幸的是,这些字段的名称很长。谢谢你的帮助。