精华内容
下载资源
问答
  • 修改整个表的数据
    千次阅读
    2019-10-12 11:35:17

    第一种方法:ALTER TABLE

    将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句,转换表的存储引擎会导致失去原引擎相关的所有特性。

    例:将mytable的引擎修改为InnoDB

    mysql> ALTER TABLE mytable ENGINE = InnoDB;
    

    上述方法适用任何的存储引擎,但执行时间较长。MySQL会按行将数据从原表复制到一张新表中,在复制过程中会消耗系统所有的I/O能力,同时会对原表加上读锁。如果在繁忙的表上执行此操作需要特别小心。

    第二种方法:导出和导入数据

    使用mysqldump工具将数据导出到文件,然后修改文件中CREATE TABLE语句的存储引擎选项和表名,同时注意mysqldump默认会自动加上CREATE TABLE语句前加上DROPTABLE语句,若忽略此点可能会导致数据丢失。

    第三种方法:创建与查询(CREATE 和 SELECT)

    此方法综合了上述两种方法的高效和安全,不需要导出整个表,而是先创建一个新的存储引擎的表,然后利用 INSERT … SELECT语法导入数据。

    mysql > CREATE TABLE innodb_table LIKE myisam_table;
    mysql > ALTER TABLE innodb_table ENGINE=InnoDB;
    mysql > INSERT INTO innodb_table SELECT * FROM myisam_table;
    

    如果数据量大,可考虑分批处理,针对每一段数据执行事务提交操作,以免大事务产生过多的undo。

    假设有主键字段id,可重复运行以下语句将数据导入新表:

    mysql > START TRANSACTION;
    mysql > INSERT INTO innodb_table SELECT * FROM myisam_table
    			-> WHERE id BETWEEN x AND y;
    mysql > COMMIT;
    

    以上操作完成后,新表是原表的一个全量复制,原表不受任何影响。如果有必要,可以在执行中对原表加锁,确保新表与原表的数据一致。

    persona Toolkit提供了一个pt-online-schema-change的工具,可以简单方便地执行上述的过程,避免手工操作可能导致的失误。

    更多相关内容
  • MySQL批量修改数据表的字符集

    千次阅读 2019-05-17 10:39:43
    对于一些老的项目要修改字符集,可以参照我的另外一篇文章: MySQL数据库字符集utf8如何转utf8mb4 https://blog.csdn.net/vfsdfdsf/article/details/89672717 本文使用的数据库版本是:5.7.17 更改编码(字符...

    由于Mysql的utf8是有缺陷的,不是真正的UTF-8,utf8mb4才是真正的UTF-8。

    对于一些老的项目要修改字符集,可以参照我的另外一篇文章:

    MySQL数据库字符集utf8如何转utf8mb4   https://blog.csdn.net/vfsdfdsf/article/details/89672717

    本文使用的数据库版本是:5.7.17

    更改表编码(字符集):

                  ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 

    如果一个数据库有很多表要修改,如果没有好的办法是非常头疼而且是费时间的。方法有很多种,下面一种比较简单而且容易操作的方法。

    查询某个数据库所有表名的语句:

    SELECT TABLE_NAME from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'DATABASE_NAME';
     

    得到所有的表名,我们可以把表名拼接到上面修改表字符集的语句中去,得到如下语句:

    SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'DATABASE_NAME';

    执行后得到的就是修改数据库中所有表字符集的语句,然后复制这些语句执行就可以了。

    下面我以demo数据库为例进行操作:

     

    如果本文有什么错误的地方烦请指出,谢谢!

    如果有问题可以留言,希望本文可以帮助有需要的人。

    记得点赞哟!

    展开全文
  • 一、 第一步,首先确定好需要查询的,以及查询数据的条件。 例如:想查询一个中前5条数据 代码如下: select * from tbl where rownum<=5; 二、第二步,将查询到的数据进行导出 三、第...

    功能描述:将PL/SQL的表导出

    实现方法:

    一、导出整个表

    单击 “工具”--“导出表” --“SQL插入”        (记得选中表,否者导出的.sql文件没有表结构)

     导出之后是一个插入数据的SQL(包含创建表和表注释,表空间等表结构)

    二、只导出表的结构

    单击 “工具”--“导出用户对象”         (记得选中表)

     

    导出之后是一个创建表的SQL(包含注释,表空间等表结构)

    三、 导出表的部分数据。

    第一步:

    例如:想查询一个表中前5条数据 代码如下:

          select * from tbl where rownum<=5;

    第二步:

    将查询到的数据进行导出

    第三步:

    选择需要导出的数据的文件类型

    就会得到一个只包含数据的文件

    四、复制表

    使用SQL语句:create table IGIS_COPY as select * from IGIS_LOCATION

    五、将表导入

    工具>导入表>SQL插入(使用SQL*Plus)>导入文件(必须是带有表结构的导入的SQL文件,注意不同表空间的表在导入时是否需要修改表空间)

     

    这就完成了整个表的导入,需注意的是这里可以使用导出表里边或者导出表结构的表结构,必须是带有表结构的插入语句才可以导入表。

    展开全文
  • MySQL数据库修改数据表引擎

    万次阅读 2018-08-16 16:37:04
    mysql 类型说明  MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具有...

    mysql 表类型说明

     MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具。 MyISAM表格可以被压缩,而且它们支持全文搜索。它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT,MyISAM是更好的选择

    InnoDB:这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。

    对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMI,默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打 开也可以),将大大提高性能。

    1、查看表状态

    SHOW TABLE STATUS LIKE 'corr_alert';

       Engine:引擎类型(旧版为type);

        Row_format:行的格式。可选值Dynamic、Fixed或Compressed;

        Dynamic行长度可变,一般包含可变长度字段,varchar或Bolb

        Fixed:长度固定

        Compressed:只在压缩表中存在

        collation:默认字符集和字符列排序规则;

        checkSum:如果启用,保存的整个表的实时校验和;

        Comment:注释或表空间剩余信息;视图则为VIEW文本字样;

     

    2、修改表引擎

    目前有三种方式进行切换:

    1)ALTER TABLE语句:

    ALTER TABLE corr_alert_copy ENGINE=INNODB;

    优点:高效,按行复制表记录到新表中

    缺点:可能消耗系统所有I/O,原表加锁

    2)手工导入与导出

           使用MYSQL自带工具mysqldump导出到文件,修改文件中的CREATE TABLE引擎语句,同时修改表名,且默认在create table前加上drop table语句

    3)创建与查询

    CREATE TABLE corr_alert_copy LIKE corr_alert;

    ALTER TABLE corr_alert_copy ENGINE=INNODB;

    INSERT INTO corr_alert_copy SELECT * FROM corr_alert;

    数据量不大,工作很好;数据量大,分批处理,每一段数据一个事务,避免大事务产生的undo操作;

    START TRANSACTION

    INSERT INTO corr_alert_copy select * from corr_alert WHERE id BETWEEN x AND y;

    COMMIT;

    优点:原表还在,可在执行过程中对原表加锁,确保数据一致,操作简单;

    案例1:需要把100张表的引擎,从InnoDB改为MYISAM。想到要手工执行,简直头大,还好有存储过程。可以利用存储过程来批量处理。

        -- 定义存储过程
        DELIMITER //
        CREATE PROCEDURE alter_table_enegine()
        BEGIN
        DECLARE `@i` INT(11);
        DECLARE `@sqlstr` VARCHAR(2560);
        SET `@i`=0;
        WHILE `@i` < 100 DO
        SET @sqlstr = CONCAT(
        "ALTER TABLE pt_course_",
        `@i`,
        " ENGINE=MYISAM"
        );
        PREPARE stmt FROM @sqlstr;
        EXECUTE stmt;
        SET `@i` = `@i` + 1;
        END WHILE;
        END;
        -- 执行存储过程
        CALL alter_table_enegine();
        -- 执行完,删掉临时用的存储过程
        DROP PROCEDURE alter_table_enegine;

    案例2:

    查询数据库有什么引擎:

    select table_name,`engine` from information_schema.tables where table_schema = 'database_name';

    查询表引擎(查看MYISAM)
    SELECT CONCAT(table_name,'  ', engine)   FROM information_schema.tables WHERE table_schema="bpm" AND ENGINE="MyISAM";  


    生成修改sql(把MYISAM改成INNODB)
    select CONCAT('alter table ',table_name,' engine=InnoDB;') FROM information_schema.tables WHERE table_schema="bpm" AND ENGINE="MyISAM"; 

    注:Mysql 建表用 MyISAM不用InnoDB(大数据高读取)原因

    MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。两种类型最主要的差别就是Innodb  支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。

      我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我目前运维的数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是我的首选。

      原因如下:

      1、首先我目前平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。

      2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。

      3、从平台角度来说,经常隔1,2个月就会发生应用开发人员不小心update一个表where写的范围不对,导致这个表没法正常用了,这个时 候MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出对应表的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把对应 的binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为我平台上最小的一个数 据库实例的数据量基本都是几十G大小。

      4、从我接触的应用逻辑来说,select count(*) 和order by   是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是 where对它主键是有效,非主键的都会锁全表的。

      5、还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们对应那表的frm.MYD,MYI的文 件,让他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。

      6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。

      7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge表做一些select  count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。

      当然Innodb也不是绝对不用,用事务的项目如模拟炒股项目,我就是用Innodb的,活跃用户20多万时候,也是很轻松应付了,因此我个人也是很喜欢Innodb的,只是如果从数据库平台应用出发,我还是会首选MyISAM。

      另外,可能有人会说你MyISAM无法抗太多写操作,但是我可以通过架构来弥补,说个我现有用的数据库平台容量:主从数据总量在几百T以上,每 天十多亿   pv的动态页面,还有几个大项目是通过数据接口方式调用未算进pv总数,(其中包括一个大项目因为初期memcached没部署,导致单台数据库每天处理  9千万的查询)。而我的整体数据库服务器平均负载都在0.5-1左右。

    展开全文
  • a.astype(int) # a 为pandas DataFrame 数据集 参考: https://www.cnblogs.com/xitingxie/p/8426340.html
  • 方法/步骤1、首先,找到Navicat并打开它,我这里使用的数据库是Musql,我就以Mysql为您讲解2、进入Navicat后,连接...5、您可以看一下,您当前的数据表的字符集是不是您所需要的,如下图所示6、如果不是,那么您可...
  • 数据库MySQL——修改数据

    千次阅读 2021-08-09 14:31:49
    一、关系数据库的基本操作:增删查改,即 CRUD:Creat、Retrieve、Update、Delete ...例如,我们向students插入一条新记录,先列举出需要插入的字段名称,然后在VALUES子句中依次写出对应字段的值: INSERT
  • Python:按列或按行修改DataFrame数据

    千次阅读 2020-08-26 09:59:39
    Python:修改DataFrame某一列或某一行的数据1.原始数据 1.原始数据 import pandas as pd import numpy as np a=pd.DataFrame([['2020-01-01 12:21:00',np.nan,2,np.nan,4,5,np.nan],['2020-01-02 16:23:03',11,22,np...
  • 微信小程序有自己的语法,修改数据我们必须要使用setData(),参数是一个key,value形式的对象。一下是我做的一个关于修改几种数据的小小记录: 1.修改单个值: page({ data:{ resultOpacity:true, }, change(e){ ...
  • INSERT:向数据库插入新的记录 INSERT语句的基本语法: INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);... 需要注意的一点:和UPDATE类似,不带WHERE条件的DELETE语句会删除整个表数据
  • vue结合Element UI如何实现表格数据修改操作

    万次阅读 多人点赞 2020-02-11 11:17:41
    一、Element UI中表格数据修改 在Element UI中,实现修改操作,需要弹出一个对话框,可以使用Dialog对话框组件。在data中,我们需要定义一个数据editDialogVisible,它的作用是控制添加用户对话框的显示与隐藏,...
  • 二:导出整个表 单击 “工具”--“导出” --“SQL插入” (记得选中,否者导出的.sql文件没有结构) 导出之后是一个插入数据的SQL(包含创建注释,空间等结构) 三:导出部分数据 SQL...
  • 数据库快速更新全表数据

    千次阅读 2017-10-28 16:50:36
    备注:以下更新的算法适合所有数据库,示例采用PostgreSQL,...开始谈正事,在update全表数据时,常规写法下大家经常抱怨更新太慢,语句如下:update set 字段1=0,字段n=n实际上这里由于在update前,数据库需要读取整个表,然
  • 因为前期设计impala外部的时候考虑不足,某些字段设置成int类型,但是随着业务增长数值已经超过了int的最大值,不能满足业务需求,所以要对某些int类型的字段进行修改字段类型为string。但是parquert在存储上,做...
  • MYSQL 修改语句(数据)

    万次阅读 多人点赞 2017-12-21 14:51:51
    修改数据(UPDATE)  如果你失忆了,希望你能想起曾经为了追求梦想的你。 我们玩QQ、微信、淘宝等等,都会有一个操作:修改信息 淘宝常用的嘛,新增了收货地址,也可以修改它,微信/QQ修改昵称、密码、签名...
  • 【Excel】数据透视—简单数据分析实例

    千次阅读 多人点赞 2019-10-24 11:00:12
    【Excel】数据透视数据透视布局 【Excel】数据透视—标签合并居中 【Excel】数据透视—新增一列(字段) ...主要就是修改生成的数据透视的【值显示方式】,就不需要我们自己用公式去计算...
  • 在函数里面修改列表数据

    千次阅读 2018-09-18 21:30:23
    局部变量,全局变量,赋值相互独立 names = ['Lilei','Jcak'] def change_name(): names = ['Lilei','Hi'] print(names) change_name() #['Lilei','Hi'] print(names) #['Lilei','...修改列表里面的元素...
  • setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。 参数说明 字段 类型 必填 描述 版本 data Object 是 这次要改变的数据 callback Function 否 setData...
  • C# 数据修改

    千次阅读 2019-04-27 10:37:29
    表数据修改涉及到数据库,所以先实例化数据库为自己所用 ,然后可写修改数据的方法,在修改方法之前,先说明一个问题,用户在操作的时候时常要提示用户目前的一个状态,需要一些提示文本,这里选择封装调用 ...
  • 是一个基于hadoop的数据仓库工具,可以将结构化数据映射成一张数据表,并提供类SQL的查询功能。 Hive的意义是什么 背景:hadoop是个好东西,但是学习难度大,成本高,坡度陡。 意义(目的):降低程序员使用...
  • vue中修改data中数据的方法

    万次阅读 多人点赞 2019-12-16 11:10:06
    有的时候,当我们手动对data中的数据修改时,vue却监听不到这些数据的变化,导致页面没有触发新一轮的更新。 注意:出现以上问题的原因在于,没有通过vue提供的方法对保存在data中的数据进行修改。强制性通过js对...
  • 向数据库中插入一条数据,先列举出需要插入的字段名称,然后在VALUES子句中依次写出对应字段的值 INSERT INTO <表名> (字段1, 字段2, …) VALUES (值1, 值2, …);(注意VALUES紧跟括号不要换行和加分号) ...
  • Sqlite之修改表中某一列

    千次阅读 2018-04-25 10:01:04
    Sqlite是不能像其他数据库那样对列进行修改的,包括队列的重命名,删除列,修改列属性等操作比如像mysql... --删除列 alter table test modify address char(10) --修改表列类型 或者 alter table test change...
  • 2、接下来我们开始正式的讲解【数据透视】,选择【整个表格】,然后选择【插入-数据透视】。3、然后在弹出的表格中点击【确定】,然后在【左侧的字段列表中】,将【班级拖动到行标签;销量拖动到数值标签;时间...
  • vue修改 表格数据

    千次阅读 2019-06-12 15:09:25
    在使用 element-UI 中el-table时,更新TABLEDATA 中 ROW的某一个属性时,没有更新视图的问题。 原因:受 ES5 的限制,Vue.js 不能检测到对象属性的添加或删除。...例:由于table表格只能监听整个row的变化,不...
  • clickhouse修改表的TTL

    千次阅读 2021-06-23 10:18:51
    -- 修改表的TTL(整个表,不是列) -- 如下insertTime是中的一列数据,代表以这个时间为准,365天自动删除过期数据,就是删除数据插入时间超过365天的数据 ALTER TABLE my_table MODIFY TTL insertTime + INTERVAL 365 ...
  • 第6章 创建、修改和删除 是数据库存储数据的基本单位。 一个包含若干字段或记录。 的操作包括创建新修改表和删除。 本章将讲解如何在数据库中操作,包括: 创建的方法; 的完整性约束条件...
  • 通过sql命令的方式生成所有的truncate语句并写入到.sql脚本文件中,然后执行脚本即可完成删除操作,并且保留了结构。
  • 问题参考自:...假设的引擎是 Innodb, MySQL 5.7+ 删除一条记录,首先锁住这条记录,数据原有的被废弃,记录头发生变化,主要是打上了删除标记。也就是原有的数据 deleted_flag 变成 1.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,372,659
精华内容 549,063
关键字:

修改整个表的数据