分类 Database 下的文章

背景:最近业务上经常遇到客户试用系统一段时候后,由于试用阶段对系统不熟悉,试用后需要将使用阶段的测试数据都要清空,然后进行正式使用系统。清空基础数据相关的表操作,但是有外键约束,是无法直接删除,需要先将有外键关联的表的数据清空,解除外键约束。

如果才能获取有哪些表引用了该表呢?其实我们可用从MySQL中的information_schema.KEY_COLUMN_USAGE来获取。

-- 获取所有信息
SELECT *
FROM information_schema.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = '{database}'
  AND REFERENCED_TABLE_NAME = '{table}';

-- 获取引用表及外键关联列名
SELECT TABLE_NAME, COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE CONSTRAINT_SCHEMA = '{database}'
  AND REFERENCED_TABLE_NAME = '{table}';

表information_schema.KEY_COLUMN_USAGE字段说明

- 阅读剩余部分 -

全国行政区域数据库

SQL脚本:

CREATE TABLE `area` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL COMMENT '名称',
  `abbr` varchar(50) NOT NULL COMMENT '简称',
  `sortBy` int(3) DEFAULT '0' COMMENT '排序',
  `level` int(1) DEFAULT NULL COMMENT '等级(1省/直辖市,2地级市,3区县,4镇/街道)',
  `longitude` varchar(50) DEFAULT NULL COMMENT '经度',
  `latitude` varchar(50) DEFAULT NULL COMMENT '纬度',
  `parentId` int(11) DEFAULT NULL COMMENT '父级ID',
  PRIMARY KEY (`id`),
  KEY `fk_area_parent` (`parentId`),
  CONSTRAINT `fk_area_parent` FOREIGN KEY (`parentId`) REFERENCES `area` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

- 阅读剩余部分 -

最近处理通过JDBC导出备份mysql数据库,中间历经波折踩了不少坑,不过也收获颇多,在此分享下。

MySQL转义符

  • '0':ASCII 0 (NUL)符;
  • 'n':换行符;
  • 'r':回车符;
  • '\':反斜杠(“”)符;
  • ''':单引号(“'”)符;
  • '"':双引号(“"”)符

- 阅读剩余部分 -

现在的应用系统越来越多的都是业务系统与数据库系统是分离的,这里就会涉及到数据库备份的问题。如果业务系统与数据库是在同一服务器,可以很简单的用mysql自带的命令:

mysqldump --databases dbName > dbNameBak.sql

现在是数据库服务器与应用系统不在同一台服务器,我们可以通过JDBC方式进行备份数据库操作,

- 阅读剩余部分 -