网店日常维护过程中,难免要跟各种批量操作打交道,

虽然大多数操作可以通过批量上传 (easy populate) 和 快速更新 模块来完成,

但在应用便捷性和一些功能性的调整上, 总有一定的局限性;

网站的全部数据均存放在数据库中, 有什么变更 直接操作数据库无疑是最便捷的方式,

既然要动数据库, SQL语句是肯定离不开了,

日常跟网站打交道, 要接触熟悉各种代码, 这里又多了一种代码, 有点儿让人头大,

因此也就了本文, 下面为日常应用中可能涉及到的常用的批量操作SQL语句,

可多条同时执行 亦可按需 执行单条命令; 一条完整的SQL语句 以 ; 号结束.

下面的命令语句可以通过 后台 工具 安装SQL脚本 提交

也可以直接复制粘贴到 PHPMyadmin 中对应的数据库中的 SQL 项中 执行

一 批量删除全部商品等数据

# ——————————————————–
# 功能:清空Zen Cart中文版1.3.x的演示数据
# 提醒:请做好备份 !!!
# 使用:管理页面 -> 工具 -> 执行SQL脚本
#
# Zen Cart 中文博客
# ——————————————————–
 
代码:
# 清空商品分类、商品、属性
TRUNCATE TABLE categories;
TRUNCATE TABLE categories_description;
 
# 清空商品以及属性
TRUNCATE TABLE media_clips;
TRUNCATE TABLE media_manager;
TRUNCATE TABLE media_to_products;
TRUNCATE TABLE media_types;
TRUNCATE TABLE music_genre;
TRUNCATE TABLE product_music_extra;
TRUNCATE TABLE product_types_to_category;
TRUNCATE TABLE products;
TRUNCATE TABLE products_attributes;
TRUNCATE TABLE products_attributes_download;
TRUNCATE TABLE products_description;
TRUNCATE TABLE products_discount_quantity;
TRUNCATE TABLE products_notifications;
TRUNCATE TABLE products_options;
TRUNCATE TABLE products_options_types;
TRUNCATE TABLE products_options_values;
TRUNCATE TABLE products_options_values_to_products_options;
TRUNCATE TABLE products_to_categories;
TRUNCATE TABLE record_artists;
TRUNCATE TABLE record_artists_info;
TRUNCATE TABLE record_company;
TRUNCATE TABLE record_company_info;
 
# 清空推荐商品
TRUNCATE TABLE featured;
 
# 清空促销商品
TRUNCATE TABLE salemaker_sales;
 
# 清空特价商品
TRUNCATE TABLE specials;
 
# 清空团体价格
TRUNCATE TABLE group_pricing;
 
# 清空厂家及资料
TRUNCATE TABLE manufacturers;
TRUNCATE TABLE manufacturers_info;
 
# 清空客户评论
TRUNCATE TABLE reviews;
TRUNCATE TABLE reviews_description;
 
#清空前台注册用户 订单 历史订单等信息 慎用
TRUNCATE TABLE `address_book`;
TRUNCATE TABLE `admin_activity_log`;
TRUNCATE TABLE `counter`;
TRUNCATE TABLE `counter_history`;
TRUNCATE TABLE `customers`;
TRUNCATE TABLE `customers_basket`;
TRUNCATE TABLE `customers_basket_attributes`;
TRUNCATE TABLE `customers_info`;
TRUNCATE TABLE `orders`;
TRUNCATE TABLE `orders_products`;
TRUNCATE TABLE `orders_products_attributes`;
TRUNCATE TABLE `orders_products_download`;
TRUNCATE TABLE `orders_status_history`;
TRUNCATE TABLE `orders_total`;
TRUNCATE TABLE `paypal`;
TRUNCATE TABLE `paypal_payment_status_history`;
TRUNCATE TABLE `paypal_session`;
update `products_description` set `products_viewed` = '0' WHERE `products_viewed` > '0';
update `products` set `products_ordered` = '0' WHERE `products_ordered` > '0';

二 批量增加各常用项数据字段

#=====================================================================
 # @ 增大 Zen Cart 数据库字段
 #
 # @ 使用方法: (下面三种导入方式 任选其一 不必重复操作)
 # @ 1. 复制本文件代码, 粘贴入Zen Cart 后台 --> 工具 --> SQL安装 项中 提交 或 在其的 浏览文件中 找到本文件 直接提交导入
 # @ 2. 直接在 PHPMyadmin中 的 当前数据库中的 SQL项 粘贴本文件代码, 执行即可
 # @ 3. 在 PHPMyadmin  中的当前数据中 点击导入项 并导入本文件 执行即可
 #
 #=====================================================================
ALTER TABLE categories MODIFY categories_image varchar(255) ;
ALTER TABLE categories_description MODIFY categories_name varchar(255) ;
ALTER TABLE products MODIFY products_model varchar(255) ;
ALTER TABLE products MODIFY products_image varchar(255) ;
ALTER TABLE products_description MODIFY products_name varchar(255) ;
ALTER TABLE address_book MODIFY entry_firstname varchar(255) ;
ALTER TABLE address_book MODIFY entry_lastname varchar(255) ;
ALTER TABLE categories_description MODIFY categories_name varchar(255) ;
ALTER TABLE configuration_group MODIFY configuration_group_title varchar(255) ;
ALTER TABLE customers_wishlist MODIFY products_name varchar(255) ;
ALTER TABLE customers_wishlist MODIFY wishlist_name varchar(255) ;
ALTER TABLE files_uploaded MODIFY files_uploaded_name varchar(255) ;
ALTER TABLE orders MODIFY customers_name varchar(255) ;
ALTER TABLE orders MODIFY customers_email_address varchar(255) ;
ALTER TABLE orders MODIFY delivery_name varchar(255) ;
ALTER TABLE orders MODIFY billing_name varchar(255) ;
ALTER TABLE orders MODIFY cc_owner varchar(255) ;
ALTER TABLE orders_products MODIFY products_name varchar(255) ;
ALTER TABLE orders_products MODIFY products_model varchar(255) ;
ALTER TABLE address_book MODIFY entry_street_address varchar(255) ;

三批量变更商品部分属性

#==========================
 # @ Zen Cart 中文博客
 #==========================
 
 #批量设置特价商品起始时间, 其中 0001-01-01 为 无起始时间
UPDATE specials SET specials_date_available ='0001-01-01';
 
#批量设置特价商品到期时间 其中 2020-12-31 为到期时间
UPDATE specials SET expires_date ='2020-12-31';
 
#批量开启特价商品
UPDATE specials SET status ='1';
 
#批量关闭特价商品
UPDATE specials SET status ='0';
 
#批量设置全站商品免运费
UPDATE products SET product_is_always_free_shipping = '1';
 
#批量更改商品添加时间 其中 2011-10-01 为添加时期
UPDATE products SET products_date_added = '2011-10-01';
 
#批量更改商品重量 其中 500 为重量值
UPDATE products SET products_weight = '500';
 
#批量设置库存数量 其中 99 为库存数量
UPDATE `products` SET `products_quantity` = '99';
 
#批量设置特价,其中 +11.55 指的是增加 11.55,如果是减少就是 -11.55
UPDATE specials SET specials_new_products_price=specials_new_products_price+11.55;
UPDATE products p,specials s SET p.products_price_sorter = s.specials_new_products_price WHERE p.products_id = s.products_id;
 
#批量设置原价,其中 +22.66 指的是增加 22.66,如果是减少就是 -22.66
UPDATE `products` SET `products_price`=`products_price`+22.66;
 
#批量替换商品描述指定字符
update products_description set products_description=replace(products_description,'这里输入要查找的字符','这里输入要替换的字符')
 
#批量配置图像参数
update configuration set configuration_value=replace(configuration_value,'原图像宽或高','想要修改的图像宽或高');
 
#按选项关健字段更新配置
UPDATE `configuration` SET `configuration_value` = '更新值' WHERE `configuration`.`configuration_key` = '配置项关健字段';
 
#按选项标题更新具体配置
UPDATE `configuration` SET `configuration_value` = '更新值' WHERE `configuration`.`configuration_title` = '配置项标题';
 
#恢复后台管理员密码为 admin 用于密码找回时使用
UPDATE `admin` SET `admin_pass` = '351683ea4e19efe34874b501fdbf9792:9b' WHERE `admin`.`admin_id` =1;

再补充一个 修复 因使用批量删除导致的后台添加商品属性下拉选择空白的SQL
详情可以参见: 解决 Zen cart 后台属性选项名称下拉空白问题

#==========================
 # @ Zen Cart 中文博客
 #==========================
INSERT INTO `products_options_types` VALUES (0, '下拉');
INSERT INTO `products_options_types` VALUES (1, '文本');
INSERT INTO `products_options_types` VALUES (2, '单选');
INSERT INTO `products_options_types` VALUES (3, '多选');
INSERT INTO `products_options_types` VALUES (4, '文件');
INSERT INTO `products_options_types` VALUES (5, '只读');
INSERT INTO `products_options_values` (products_options_values_id,language_id,products_options_values_name,products_options_values_sort_order) VALUES (0,1,'TEXT',0);

2012年8月29日更新:
修复批量删除商品后生成的垃圾属性信息 导致无法使用批量更新问题.

有时候商品原数据包含有属性时, 使用批量删除语句时,
导致数据表中属性信息删除不完全,
因此无法使用批量表重新导入商品数据,
这时候只要查看下 tempEP 目录下的 ep_debug_log.txt 文件,
一般会有如下内容

Product debris corresponding to the following product_id(s) cannot be deleted by EasyPopulate:
3:9d2458150f98263abbde3fa39f5a952c
It is recommended that you delete this corrupted data using phpMyAdmin.

将诸如 3:9d2458150f98263abbde3fa39f5a952c 这样格式的一句话复制下
然后将下面的修复SQL语句中的 将我替换为对应的垃圾信息
替换为 上面哪段复制下信息 然后通过SQL导入即可

#=====================================================================
 # @ 修复批量删除商品后生成的垃圾属性信息 导致无法使用批量更新问题
 #=====================================================================
DELETE FROM `customers_basket_attributes` WHERE (
    CONVERT( `customers_basket_attributes_id` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `customers_id` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `products_id` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `products_options_id` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `products_options_value_id` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `products_options_value_text` USING utf8 ) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT( `products_options_sort_order` USING utf8 ) LIKE '将我替换为对应的垃圾信息');
 
DELETE FROM `orders_products_attributes` WHERE (
    CONVERT(`orders_products_attributes_id` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`orders_id` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`orders_products_id` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_options` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_options_values` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`options_values_price` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`price_prefix` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`product_attribute_is_free` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_attributes_weight` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_attributes_weight_prefix` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_discounted` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_base_included` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_onetime` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_factor` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_factor_offset` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_factor_onetime` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_factor_onetime_offset` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_qty_prices` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_qty_prices_onetime` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_words` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_words_free` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_letters` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`attributes_price_letters_free` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_options_id` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_options_values_id` USING utf8) LIKE '将我替换为对应的垃圾信息'
    OR CONVERT(`products_prid` USING utf8) LIKE '将我替换为对应的垃圾信息');

2012年12月26日更新:
解决本地邮件环境配置有问题时
Zen Cart1.5x后台无法提交涉及邮件通知操作项

Zen Cart15x 程序默认后台有修改提交时 会有邮件通知
当本地调试环境邮件相关环境配置有问题或不支持时
会导致本地安装的Zen Cart1.5x程序后台涉及邮件通知的操作无法进行
一个典型的实例就是首次安装后无法更改后台密码
使用临时密码登录时会出现下面的提示字样

Email Error: Could not instantiate mail function. Please check Admin->Configuration->Email Options->Email Transport.

当出现上述问题时,可以进入当前程序所使用的数据库下
将下面的SQL语句提交即可解决

#=====================================================================
# @ 解决本地邮件环境配置有问题时 Zen Cart1.5x后台无法提交涉及邮件通知操作项
#=====================================================================
#关闭邮件发送
UPDATE `configuration` SET `configuration_value` = 'false' WHERE `configuration`.`configuration_id` =267;

但当程序本地调试完毕 正式布暑后 建议启用邮件发送选项,
启用邮件发送项可于后台->商店配置->邮件参数下启用,
也可以直接使用下面的语句快速恢复.

#启用邮件发送
UPDATE `configuration` SET `configuration_value` = 'true' WHERE `configuration`.`configuration_id` =267;

2012年12月29日更新:
修复添加新语言包时, 原有以添加的商品和分类等信息无法编辑保存问题

在产品添加完成后, 再添加新的语言包时,
在编辑原有的产品或分类时会出现后台无法保存新添加的语言,
而新添加的商品或分类时则没有上述问题的情况.

出现此问题的原因是在数据库没有对应的数据条目,
而编辑原有产品时, 程序只执行更新操作, 所以无法保存.

针对此问题的解决的办法是在多语言添加后再重新进行产品和分类信息的添加,
或者运行下面的SQL语句把缺失的多语言内容补修复补全即可.
需要注意的是, 当添加了多个新的语言包时,
下面的修复sql 需要分别调整执行多次,
具体调整参见后面详细说明;

#=====================================================================
 # @ 修复添加新语言包时, 原有以添加的商品和分类等信息无法编辑保存问题
 #=====================================================================
#设置默认语言的ID
SET @default_lang=1;
#设置新语言的ID
SET @target_lang=2;
 
INSERT INTO `products_description` ( products_id, language_id, products_name, products_description, products_url,products_viewed )
SELECT products_id, @target_lang AS language_id, products_name, products_description, products_url, products_viewed
FROM `products_description`
WHERE language_id =@default_lang
AND products_id NOT IN (
SELECT products_id   FROM `products_description`
WHERE language_id =@target_lang
);
 
#补齐缺失的语言(分类)
INSERT INTO `categories_description` (categories_id,language_id,categories_name,categories_description )
SELECT categories_id,@target_lang AS language_id,categories_name,categories_description
FROM `categories_description`
WHERE language_id =@default_lang
AND categories_id NOT IN (
SELECT categories_id FROM `categories_description`
WHERE language_id =@target_lang
);
 
#补齐缺失的语言(产品META)
INSERT INTO `meta_tags_products_description` ( products_id, language_id, metatags_title, metatags_keywords, metatags_description )
SELECT products_id, @target_lang AS language_id, metatags_title, metatags_keywords, metatags_description
FROM `meta_tags_products_description`
WHERE language_id=@default_lang
AND products_id NOT IN (
SELECT products_id   FROM `meta_tags_products_description`
WHERE language_id =@target_lang
);
 
#补齐缺失的语言(分类META)
INSERT INTO `meta_tags_categories_description` ( categories_id, language_id, metatags_title, metatags_keywords, metatags_description )
SELECT categories_id, @target_lang AS language_id, metatags_title, metatags_keywords,metatags_description
FROM `meta_tags_categories_description`
WHERE language_id=@default_lang
AND categories_id NOT IN (
SELECT categories_id   FROM `meta_tags_categories_description`
WHERE language_id =@target_lang
);

上面的sql语句注意下面这两句,

#设置默认语言的ID
SET @default_lang=1;
#设置新语言的ID
SET @target_lang=2;

这两句sql语句中的语言ID需要根距自己的网站实际情况作针对性的调整修改,
当前网站的实际语言ID获取可通过下面的方法获得,
后台 -> 界面设定 -> 语言代码 -> 点击对应的语言项目,
然后查看浏览器地址栏中的地址 有诸如此类的地址格式
http://你的域名/你的管理目录名/languages.php?page=1&lID=
红色标识字样即为对应的语言ID
 
小提示: 涉及到批量和数据库操作时 先备份当前数据库是一个很好的习惯

 

Zen Cart 常用SQL命令的更多相关文章

  1. python 操作数据库的常用SQL命令

    这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...

  2. mysql常用sql命令

    一.连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  3. Oracle常用sql命令

    1.查看数据库归档是开启还是关闭SQL> archive log list 更改数据库归档模式: SQL> shutdown immediateSQL> startup mountS ...

  4. DB2常用sql命令

    DB2 清除数据库序列缓存 alter sequence wfr.wfr_bill_histories_s  nocache; 创建清空所有表数据脚本select 'alter table '||RT ...

  5. MySQL基础学习(二) 常用SQL命令

    一. 1. select version();  查看数据库版本 2. select user(); 查看当前用户 3. select now(); 查看当前时间 4. show databases; ...

  6. 常用sql命令

    --1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 CREATE TABLE student (     [id] [int] IDENTITY(1,1) NOT NU ...

  7. MongoDB数据库常用SQL命令 — MongoDB可视化工具Robo 3T

    1.db.collection.updateMany() 修改集合中的多个文档. db.getCollection('user').find({"pId":"3332a5 ...

  8. 常用命令常用sql:SHOWVARIABLESLIKE'character%'

    mysql学习笔记-常用命令 常用sql: SHOW VARIABLES LIKE 'character%';查看字符集SHOW VARIABLES LIKE 'collation_%';show e ...

  9. oralce数据库常用到的一些sql命令(加字段注释,修改数据之类)

    最近开始接触oralce,整理了一下最近使用 pl/sql 常用到的一些sql命令 1.修改表中的数据 编写查询语句及条件,然后加上"FOR UPDATE","FOR U ...

随机推荐

  1. JS创建对象的四种简单方式 (工厂模式和自定义构造函数创建对象的区别)

    // 对象:特指的某个事物,具有属性和方法(一组无序的属性的集合) // 特征------>属性 // 行为------>方法 // 创建对象的四种方式 1 // 1.字面量的方式,就是实 ...

  2. 如何为根分区扩容(centos7为例)

    linux系统所有的文件都是存放在根分区中的,如果根分区容量即将耗尽,我们就需要给根分区扩容,我们可以使用lsblk命令来查看,系统的根分区实际是逻辑卷,所以想要扩展根分区只要将逻辑卷扩容就可以了.此 ...

  3. Oracle 多行拼接函数 :[Err] ORA-00904: "WM_CONCAT": 标识符无效

    SELECT LISTAGG(GOODSNAME,';') WITHIN GROUP (ORDER BY GOODSNAME) AS sd WM_CONCAT()  方法被替代成:LISTAGG(GO ...

  4. django中Queryset的删除问题、分页问题

    在开发选课界面时需要过滤掉已经选择过的课程,之前一直以为QuerySet是列表的结构,所以打算在判断之后使用list.remove()方法将已选的课程除掉,但在实际操作时,发现这么做并不行,原来Que ...

  5. Partition to K Equal Sum Subsets

    Given an array of integers nums and a positive integer k, find whether it's possible to divide this ...

  6. ~艾比郎~学Python之Python基础

    第一步: 尝试写Hello World程序 这是我用Python写出的第一个程序,我的一小步,我人生的一大步 在linux 下创建一个文件叫hello.py,如图所示 然后执行命令:python he ...

  7. CSP-S 2019 杂记

    CSP-S 2019 游记 update 2019.11.18 考完后的第一感受 update 2019.11.24 我校某优秀学子把全SD的选手程序全测了一遍(太狠了,于是就知道了大概的惨淡成绩,大 ...

  8. c++贪吃蛇

    显示方式:清屏打印二位数组,数组即游戏地图,包括墙面(用‘W’表示),蛇(‘H’表蛇头,‘B’表身体)和食物(用‘f’表示). ; char map[MaxMap][MaxMap]; 边缘为墙面: ; ...

  9. Ruby Rails正式学习:Ruby on Rails 做个演示项目吧,逐渐完善

    项目开始 一. 新建Rails项目 1. 修改一下Gemfile文件(简单修改一下) source 'https://rubygems.org' git_source(:github) { |repo ...

  10. 如何用纯 CSS 绘制一个世界上不存在的彭罗斯三角形

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RyvgMZ 可交互视频教 ...