使用 SELECT ... INTO 使用 pyodbc 创建一个新的 Access 表

Posted

技术标签:

【中文标题】使用 SELECT ... INTO 使用 pyodbc 创建一个新的 Access 表【英文标题】:Creating a new Access table with pyodbc using SELECT ... INTO 【发布时间】:2014-05-12 15:26:04 【问题描述】:

我正在尝试基于 3 个不同的 Access 表创建一个名为 Component_New 的新表,并使用公共字段进行连接。

我目前有以下:

Make_Table = """ SELECT mapunit.mukey, copmgrp.cokey, copmgrp.copmgrpkey, copm.pmkind, copm.pmorigin, component.comppct_r, component.compname, component.majcompflag, copmgrp.pmgroupname INTO Component_Table FROM (mapunit INNER JOIN component ON (mapunit.mukey = component.mukey) INNER JOIN copmgrp ON (component.cokey = copmgrp.cokey) INNER JOIN copm ON (copmgrp.copmgrpkey = copm.copmgrpkey) INNER JOIN chorizon ON (component.cokey = chorizon.cokey)) """
cursor.execute(Make_Table)
con.commit()

似乎找不到我的错误! 提前谢谢!

为了更好地理解我的问题:我只是想知道如何获取以下添加/连接信息并使用它创建一个表 --> JOINing mdb tables with pyodbc

我的以下代码在 Access 中工作,但我需要将其放入 Python 中,以便我可以循环通过多个不同的县来执行相同的添加/加入:

SELECT mapunit.mukey, copmgrp.cokey, copmgrp.copmgrpkey, copm.pmkind, copm.pmorigin, component.comppct_r, component.compname, component.majcompflag, copmgrp.pmgroupname 
INTO Component_Table 
FROM (((mapunit INNER JOIN component ON mapunit.mukey = component.mukey) 
INNER JOIN copmgrp ON component.cokey = copmgrp.cokey) 
INNER JOIN copm ON copmgrp.copmgrpkey = copm.copmgrpkey) 
INNER JOIN chorizon ON component.cokey = chorizon.cokey; 

【问题讨论】:

请使用代码格式 我认为是代码格式? 【参考方案1】:

Python Make_Table 字符串中的括号不在正确的位置。在您的 Python 脚本示例中,您(错误地)仅将括号放在 ON 条件周围

SELECT 
    mapunit.mukey, copmgrp.cokey, copmgrp.copmgrpkey, copm.pmkind, copm.pmorigin, component.comppct_r, component.compname, component.majcompflag, copmgrp.pmgroupname 
INTO Component_Table 
FROM 
    (
        mapunit 
        INNER JOIN 
        component 
            ON (mapunit.mukey = component.mukey) 
        INNER JOIN 
        copmgrp 
            ON (component.cokey = copmgrp.cokey) 
        INNER JOIN 
        copm 
            ON (copmgrp.copmgrpkey = copm.copmgrpkey) 
        INNER JOIN 
        chorizon 
            ON (component.cokey = chorizon.cokey)
    )

而在后续的 Access 示例中,您在整个 INNER JOIN 构造周围都有括号(正确),这是 Access SQL 所要求的

SELECT 
    mapunit.mukey, copmgrp.cokey, copmgrp.copmgrpkey, copm.pmkind, copm.pmorigin, component.comppct_r, component.compname, component.majcompflag, copmgrp.pmgroupname 
INTO Component_Table 
FROM 
    (
        (
            (
                mapunit 
                INNER JOIN 
                component 
                    ON mapunit.mukey = component.mukey
            ) 
            INNER JOIN 
            copmgrp 
                ON component.cokey = copmgrp.cokey
        ) 
        INNER JOIN 
        copm 
            ON copmgrp.copmgrpkey = copm.copmgrpkey
    ) 
    INNER JOIN 
    chorizon 
        ON component.cokey = chorizon.cokey

您需要调整 Python 代码中的 SQL 字符串,以便括号在正确的位置。

【讨论】:

以上是关于使用 SELECT ... INTO 使用 pyodbc 创建一个新的 Access 表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL存储过程中使用SELECT …INTO语句为变量赋值

使用 SELECT ... INTO 将 Access 表中的特定列导出到 CSV

使用 SELECT * INTO 时收到非 NULL 警告

使用 SELECT ... INTO 使用 pyodbc 创建一个新的 Access 表

使用 Select Into 时出现错误消息

Oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解