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

虽然大多数操作可以通过批量上传 (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. OpenID简介

    OpenID 是一个以用户为中心的数字身份识别框架,它具有开放.分散性.OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可 ...

  2. 使用Navicat为Oracle导入函数后函数显示红叉

    上图是plsql中的截图 有可能是Navicat没有缓存过程,刷新试一试,不行的话,对导入的函数进行重新编译即可. 还发现一个问题是,Navicat导出的脚本里面,函数部分竟然没有参数和返回值,让我很 ...

  3. AES256位加密

    目录 1.    算法简介 2.    算法流程 2.1 扩展密钥 2.2 轮密钥加 2.3 字节代替 2.4 行位移 2.5 列混淆 3.    总结 附录A 运算示例 1.算法简介高级加密标准(英 ...

  4. nvm 安装及操作 node版本管理

    安装 > curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash 安装完成后重启下 ...

  5. 数据中心网络中的40GBASE-T

    数据中心网络基础设施正在见证由不断增长的带宽和网络性能需求推动的变革.10 千兆位以太网是当今数据中心的实际标准,而 40G 以太网的采用率越来越高.虽然 40G 以太网标准已存在于 SM 光纤和基于 ...

  6. C# 重写WndProc

    重写WndProc方法来处理 Windows 消息 处理 Windows 消息. 在开发winForm时,常常要处理Windows消息,可以重写WndProc来实现.常见代码如下: using Sys ...

  7. 浅谈Linux cp命令

    Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...

  8. 使用javascript完成一个简单工厂设计模式。

    在JS中创建对象会习惯的使用new关键字和类构造函数(也是可以用对象字面量). 工厂模式就是一种有助于消除两个类依赖性的模式. 工厂模式分为简单工厂模式和复杂工厂模式,这篇主要讲简单工厂模式. 简单工 ...

  9. 关于springcloud hystrix 执行 hystrix.stream 跳转失败的问题

    经过观看网友的总结:应该时版本的问题.某些版本没有对/hystrix.stream进行配置 所以解决方案(网友答案): 需要配置类配置下面 @Bean public ServletRegistrati ...

  10. sqlserver安装和踩坑经历

    sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...