2

从 Access .mdb 表中插入选定的记录/行时,我Syntax error in INSERT INTO statement. (-3502)在此代码块的第 23 行找到了一个“”。

我想要发生的是

  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()

提前致谢

4

2 回答 2

1

你的语法是错误的。

在表中插入数据的正确方法是:

insert into table1 (field1, field2, ...)
select ...

或者:

insert into table1(field1, field2, ...)
values (value1, value2, ...)
于 2013-03-12T21:05:52.707 回答
1

考虑使用SELECT...INTO 语句创建和填充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;
于 2013-03-13T06:29:47.310 回答