sql - pyodbc - 插入选定的行( Access mdb)

标签 sql ms-access pyodbc

从 Access .mdb 表插入选定的记录/行时,我在此代码块的第 23 行发现“INSERT INTO 语句中的语法错误。(-3502)”。

我想要发生的是

  1. 创建表“65001”
  2. 从表“LMR_Combined”中选择前 65000 行
  3. 将这些选定的行插入到新创建的“65001”表中。

此 INSERT INTO 语句中存在哪些语法错误导致无法成功执行?

import pyodbc
DBFile = r'C:\Python27\FCC_Processing\LMR Combined.mdb'
conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='+DBFile)

cursor = conn.cursor()


# Creates a table "65001" in the MDB that matches the schema of table "LMR_Combined"
string = "CREATE TABLE 65001(OBJECTID integer, Unique_ID varchar(255), LICENSEE_NAME varchar(255))"

cursor.execute(string)

# Selects 65000 records from table "LMR_Combined"
cursor.execute('select OBJECTID, Unique_ID, LICENSEE_NAME from LMR_Combined where OBJECTID > 0 and OBJECTID < 65001')

row = cursor.fetchone()

# For debugging, print a line
if row:
    print row

# Inserts the 65000 rows into the new table "65001"
cursor.execute('insert OBJECTID, Unique_ID, LICENSEE_NAME into 65001')

conn.commit()

提前致谢

最佳答案

考虑使用 SELECT...INTO Statement 创建并填充您的 65001 表是否足够:

SELECT OBJECTID, Unique_ID, LICENSEE_NAME
INTO [65001]
FROM LMR_Combined
WHERE OBJECTID > 0 AND OBJECTID < 65001;

如果您需要的数据类型与 SELECT...INTO 提供的数据类型不同,请执行 CREATE TABLE,然后执行以下 INSERT:

INSERT INTO [65001] (OBJECTID, Unique_ID, LICENSEE_NAME)
SELECT OBJECTID, Unique_ID, LICENSEE_NAME
FROM LMR_Combined
WHERE OBJECTID > 0 AND OBJECTID < 65001;

关于sql - pyodbc - 插入选定的行( Access mdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372002/

相关文章:

c# - SQL 更新查询返回错误

c# - 如何以编程方式确定 Jet 数据库引擎类型

python - 在 Python 中使用 pyodbc 和 SQL join 语句

python-3.x - pyodbc Azure 瞬时错误

python - MySQL python 查询从列中提取数据

sql - 当连接大量大表时,如何提高查询性能?

sql - String.sanitize 是在 rails 或 sinatra 应用程序中防止 SQL 注入(inject)的最佳方法

SQL:从当前行选择数据字段

python - 如何在 pyodbc 中自动调用 fetchall() 而不进行异常处理?

php - 将 php 搜索数组与查询结果相结合 - 内连接 php 数组