我正在使用 python 的 sqlite3 库来处理 Wikipedia .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
部分有任何问题。该文件由维基百科发布,因此应该可以使用。我知道 Pythonsqlite3
与 MySQL 的实现略有不同。它与此有关吗?