1

Python の sqlite3 ライブラリを使用してウィキペディアの .sql データ ダンプを処理していますが、次の「構文エラー」レポートが表示されます。

sqlite3.OperationalError: no such table: categorylinks

以下は、.sql をデータベースにインポートするために行った手順です。

import sqlite3
con = sqlite3.connect('wikicategories.db')
infile = open('enwiki-latest-categorylinks.sql')
str = infile.read()
cur = con.cursor()
cur.execute(str)

.sql ファイルの先頭は次のようになります。

CREATE TABLE `categorylinks` (
  `cl_from` int(8) unsigned NOT NULL DEFAULT '0',
  `cl_to` varbinary(255) NOT NULL DEFAULT '',
  `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
  `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `cl_sortkey_prefix` varbinary(255) NOT NULL DEFAULT '',
  `cl_collation` varbinary(32) NOT NULL DEFAULT '',
  `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
  KEY `cl_collation` (`cl_collation`),
  KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`)
) ENGINE=InnoDB DEFAULT CHARSET=binary;

私は本当にその部分に何の問題も見ませんでしたint(8) unsigned NOT NULL DEFAULT。このファイルはウィキペディアによって公開されているため、すぐに使用できるはずです。sqlite3Pythonには MySQL とは少し異なる実装があることを知っています。これと何か関係がありますか?

4

1 に答える 1

5

これはSQLiteが理解しているSQLではありません。でロードするとsqlite3エラーが発生します。

% sqlite3 < enwiki-latest-categorylinks.sql
Error: near line 1: near "unsigned": syntax error

これはPythonとは何の関係もありません。

2つのオプションがあります。

  1. MySQLでSQLファイルをインポートします。
  2. SQLiteが理解できるSQLに変換します。
于 2012-10-18T06:41:49.007 に答える