walinejs / waline

💬 A Simple, Safe Comment System
https://waline.js.org/en/
GNU General Public License v2.0
2.19k stars 379 forks source link

能否支持 isso 格式的评论导入? #546

Closed tiann closed 2 years ago

lizheming commented 3 years ago

可以提供下导出的数据给我们,我们这边做下适配处理

tiann commented 3 years ago

数据是一个 sqlite3 的数据库,见这里:

comments.db.zip

有什么其他需要提供的我这边也方便

tiann commented 3 years ago

我做过如下尝试,先把 isso 转成 disqus 格式,然后再用 disqus 格式迁移,但是迁移得到的文件是空的

lizheming commented 2 years ago

写了个简单的 SQL 语句,帮助你将 isso 的 comments 表转换成 Waline 的 wl_Comment 表,直接在你的 SQLite 数据库中执行以下语句应该就可以了,你可以试试。

CREATE TABLE "wl_Comment" (
    "id"    INTEGER,
    "user_id"   INTEGER,
    "comment"   TEXT,
    "insertedAt"    DATETIME DEFAULT (datetime('now', 'localtime')),
    "ip"    TEXT,
    "link"  TEXT,
    "mail"  TEXT,
    "nick"  TEXT,
    "pid"   INTEGER,
    "rid"   INTEGER,
    "status"    TEXT NOT NULL,
    "ua"    TEXT,
    "url"   TEXT,
    "createdAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    "updatedAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    PRIMARY KEY("id" AUTOINCREMENT)
);
CREATE TABLE "wl_Counter" (
    "id"    INTEGER,
    "time"  INTEGER,
    "url"   TEXT,
    "createdAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    "updatedAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    PRIMARY KEY("id" AUTOINCREMENT)
);
CREATE TABLE "wl_Users" (
    "id"    INTEGER,
    "display_name"  TEXT NOT NULL,
    "email" TEXT NOT NULL,
    "password"  TEXT NOT NULL,
    "type"  TEXT NOT NULL,
    "github"    TEXT,
    "avatar"    TEXT,
    "url"   TEXT,
    "createdAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    "updatedAt" DATETIME DEFAULT (datetime('now', 'localtime')),
    PRIMARY KEY("id" AUTOINCREMENT)
);
INSERT INTO `wl_Comment` (
    `id`,
    `user_id`,
    `comment`,
    `ip`,
    `link`,
    `mail`,
    `nick`,
    `pid`,
    `rid`,
    `status`,
    `ua`,
    `url`,
    `insertedAt`,
    `createdAt`,
    `updatedAt`
) SELECT 
    `comments`.`id` as `id`,
    NULL as `user_id`,
    `text` as `comment`,
    `remote_addr` as `ip`,
    `website` as `link`,
    `email` as `mail`,
    `author` as `nick`,
    `parent` as `pid`,
    `parent` as `rid`,
    "approved" as `status`,
    NULL as `ua`,
    `threads`.`uri` as `url`,
    datetime(`created`, "unixepoch") as `insertedAt`,
    datetime(`created`, "unixepoch") as `createdAt`, 
    datetime(`created`, "unixepoch") as `updatedAt`
 FROM `comments` LEFT JOIN `threads` ON `threads`.`id` = `comments`.`tid`;