You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Magento 1 Aheadworks Blog迁移至Magento 2 Amasty Blog Pro的文章迁移问询

我见过不少Magento开发者折腾过这类跨扩展的博客迁移,确实能通过数据库脚本搞定——不过得先摸清楚两个扩展的表结构差异,下面给你梳理双向的SQL逻辑和关键注意点:

一、从Magento 1 Aheadworks Blog导出核心数据

Aheadworks Blog的核心数据主要存在几个表中,你可以用以下SQL导出需要的内容(如果是跨服务器迁移,可将结果导出为CSV;同服务器的话可以直接跨库关联):

1. 导出文章主数据

-- 导出已发布的博客文章主内容(可根据需求去掉WHERE条件导出所有)
SELECT
    post_id AS old_post_id,
    title,
    identifier AS url_key,
    content AS post_content,
    meta_keywords,
    meta_description,
    created_time AS created_at,
    update_time AS updated_at,
    status,
    author,
    featured AS is_featured
FROM aw_blog
WHERE status = 1;

2. 导出文章与店铺的关联关系

-- 记录文章属于哪些店铺(如果你的Magento是多店铺模式)
SELECT
    post_id,
    store_id
FROM aw_blog_store;

3. 导出分类及文章-分类关联(可选)

如果需要迁移博客分类:

-- 导出博客分类
SELECT
    cat_id AS old_cat_id,
    title AS name,
    identifier AS url_key,
    description,
    status,
    position
FROM aw_blog_category;

-- 导出文章和分类的关联关系
SELECT
    post_id,
    cat_id
FROM aw_blog_post_category;
二、导入到Magento 2 Amasty Blog Pro

Amasty Blog Pro的表结构和Aheadworks有不少差异,导入前建议先在测试环境核对字段定义,以下是核心导入逻辑:

1. 导入文章主数据

-- 注意:需确保字段匹配,若Amasty有额外必填字段,要补充默认值
INSERT INTO amasty_blog_post (
    title,
    url_key,
    post_content,
    meta_keywords,
    meta_description,
    created_at,
    updated_at,
    is_active,
    author_name,
    featured,
    sort_order
)
SELECT
    title,
    url_key,
    post_content,
    meta_keywords,
    meta_description,
    created_at,
    updated_at,
    status,
    author,
    is_featured,
    0 -- 默认排序值,可按需调整
FROM (
    -- 这里替换成你的导出数据,或者直接关联Magento1的数据库
    SELECT * FROM magento1_db.aw_blog WHERE status = 1
) AS imported_posts;

2. 导入店铺关联关系

如果是多店铺,注意Magento1和Magento2的store_id可能不一致,需要提前做好映射:

-- 先创建临时表存储旧文章ID和新文章ID的映射
CREATE TEMPORARY TABLE post_id_map (
    old_post_id INT,
    new_post_id INT
);

INSERT INTO post_id_map
SELECT
    old.old_post_id,
    new.post_id
FROM (SELECT old_post_id, url_key FROM 你的导出表) AS old
JOIN amasty_blog_post AS new ON old.url_key = new.url_key;

-- 导入店铺关联
INSERT INTO amasty_blog_post_store (
    post_id,
    store_id
)
SELECT
    map.new_post_id,
    rel.store_id
FROM post_id_map AS map
JOIN magento1_db.aw_blog_store AS rel ON map.old_post_id = rel.post_id;

3. 导入分类及关联(可选)

同样需要先建立旧分类ID和新分类ID的映射:

-- 导入分类
INSERT INTO amasty_blog_category (
    name,
    url_key,
    description,
    is_active,
    position,
    meta_title,
    meta_keywords,
    meta_description
)
SELECT
    name,
    url_key,
    description,
    status,
    position,
    name, -- 用分类名填充meta_title,可根据实际调整
    meta_keywords,
    meta_description
FROM magento1_db.aw_blog_category WHERE status = 1;

-- 创建分类ID映射临时表
CREATE TEMPORARY TABLE cat_id_map (
    old_cat_id INT,
    new_cat_id INT
);

INSERT INTO cat_id_map
SELECT
    old.old_cat_id,
    new.category_id
FROM (SELECT old_cat_id, url_key FROM 你的分类导出表) AS old
JOIN amasty_blog_category AS new ON old.url_key = new.url_key;

-- 导入文章-分类关联
INSERT INTO amasty_blog_post_category (
    post_id,
    category_id
)
SELECT
    post_map.new_post_id,
    cat_map.new_cat_id
FROM magento1_db.aw_blog_post_category AS rel
JOIN post_id_map AS post_map ON rel.post_id = post_map.old_post_id
JOIN cat_id_map AS cat_map ON rel.cat_id = cat_map.old_cat_id;
关键注意事项
  • 媒体文件迁移:SQL只处理数据库数据,文章里的图片需要手动从Magento1的media/aw_blog复制到Magento2的media/amasty/blog,还要批量替换文章内容里的路径:
    UPDATE amasty_blog_post
    SET post_content = REPLACE(post_content, '/media/aw_blog/', '/media/amasty/blog/');
    
  • 用户作者映射:如果Aheadworks的author是Magento1的用户,需要把Magento1的用户ID对应到Magento2的用户ID,然后更新amasty_blog_post的author_id字段,而不是只存author_name。
  • 测试优先:一定要在测试环境先跑脚本,验证文章、分类、关联是否正常显示,有没有乱码或数据缺失。

内容的提问来源于stack exchange,提问作者dsmr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:57:40