不能用Python/SQLi加载Wikipedia SQL dump

2024-10-01 09:40:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python的sqlite3库来处理Wikipedia.sql数据转储,得到以下“语法错误”报告:

sqlite3.OperationalError: no such table: categorylinks

下面是我将.sql导入数据库的步骤

^{pr2}$

.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有一个稍微不同的实现w.r.t MySQL。这跟这有关系吗?在


Tags: 文件tokeyfromdefaultsqlclnot
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:29

这不是SQL as understood by SQLite。用sqlite3加载它会产生一个错误。在

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

这与Python无关。在

您有两种选择:

  1. 用MySQL导入SQL文件。在
  2. 将其转换为SQLite可以理解的SQL。在

相关问题 更多 >