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は、 yourCREATE 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 に答える