MySQL cookbook第10章读书笔记

1,使用load data和mysqlimport导入数据

1个ok,2个warning!!!

为什么会有warning,而且数据也没有load进去

2,指定数据文件位置

了解MySQL查找文件位置的规则。

如果load data语句没有local选项,MySQL读取数据文件将按下述规则在服务器所在机器上定位文件的位置:

  • 文件的绝对全路径名(从文件系统的根开始),MySQL直接读取该文件。
  • 给定的是文件的相对路径名,按照路径名的两种不同形式来解释和处理.

3,指定数据文件的结构

有一个数据文件但是不是load data默认格式,那么我们必须使用fields和lines子句告诉load data如何解释数据文件。另外local指定客户机位置的规则是当前目录。lines子句之下还包含一个starting by子句,用来指定每行中间剥除部分内容的序列。如果指定starting by ‘x’而输入行以abcX开头时,这四个字符都会被剥除。

4,处理引号和特殊字符

load data当心引号和转义字符。fields子句的三个子句(enclosed by, escaped by 和terminated by)

其中要完全禁止转义符处理,可指定空的转义序列:fields escaped by ‘ ’例如引用和转义符分别为“和\,输入值为”a” “b\”c”,被解释为a”b”c。

对于mysqlimport,用于指定引用和转移的命令选项为—fields-enclose-by –fields-escaped-by。

5,导入CSV文件

csv文件是以逗号而不是制表符分隔的值。

例如:包含以回车换行符对结尾的行的csv文件mytbl.txt可以使用以下语句载入到mytbl中:

对应的使用mysqlimport语句:

6,读取不同操作系统的文件

不同的操作系统中使用不同的行结束序列

Unix 通常使用换行符来结束行,在load data语句中使用:lines terminated by ‘\n’

Mac Os X使用回车字符,在load data语句中使用:lines terminated by ‘\r’

windows使用回车换行符对,在load data语句中使用:lines terminated by ‘\r\n’

7,处理重复的键值

当你的输入中包含一些记录,它们的键值与已有的表行键值一致,可以选择让load data忽略新的记录,或者取代旧的记录

例如当你确保你的数据库中的数据只存在最新的数据,如周期性地从不同的监测站接受关于当前天气情况的气象数据,并且将数据存入数据库中,从文件中load data时可以选择replace 或者ignore来告知mysql用新值来取代旧的行或者忽略忽略重复行。

load data local infile ‘data.txt’ replace into table weatherdata

对应的mysqlimport中有与load data的ignore和replace关键字选项。

8,获取关于错误输入数据的诊断信息

当操作load data之后,希望显示一些输入数据的诊断信息,当一个文件载入某个表,看到的信息:

可以使用show messages来查看相关的诊断信息。

9,跳过数据文件行

在load data 中加入一个子句 ignore n lines 表示忽略数据文件的起始n行,mysqlimport支持有同样效果的—ignore-lines=n选项

10,指定输入列顺序

数据文件中列和表的列顺序不同时,需要人为指定:

假定表中有列a,b,c,数据文件中数据对应于列b,c,a,那么此时载入文件:

load data local infile ‘mytbl.txt’into table mytbl (b,c,a)

对应的mysqlimport语句使用—columns选项指定列列表:

mysqlimport  -- local --columns=b,c,a cookbook mytbl.txt

11,在插入输入值之前对数据文件进行预处理

若数据文件内容和对应的表分别为:

使用以下命令进行预处理:

load之后数据表中的内容:

12,忽略数据文件列

假定从Unix密码文件/etc/passwd中载入信息,其中包含如下格式的行:

account:password:UID:GID:GECOS:directory:shell

创建其他列信息的表结构:

dummy为用户定义的变量,这里会忽视任意列,被称为假变量。

or使用mysqlimport中--columns:

13,从MySQL中导出查询结果

想将MySQL的查询结构导出到一个文件或者重定向另外的mysql程序的输出

1,select .. into outfile语句将查询结构导出到服务器上的文件中。

2,如果想在客户端主机上获取结果,导出查询的结果是重定向mysql程序的输出

使用mysql客户端来导出数据,select … into outfile将数据文件写入主机文件,你的mysql账户需要有file权限。

--skip-column-names告诉不要写入通常位于语句输出前部的列名行。

14,将表导出为文本文件

使用带--tab选项的mysqldump程序。mysqldump程序用于拷贝或者备份表和数据库。必须指定一个-- tab 用来指定写入文件的目录

因为mysqldump很多时候等同于select … into outfile 必须要有file权限

更改为root账户后ok

15,以SQL格式导出表内容和定义

SQL格式:

导出数据库的多个表:

所有数据库:

一些选项用于控制输出格式:

同样你可以使用这些导出的文件来在其他的服务器上生成对应的数据库:

16,使用SQL模式来控制错误的输入数据处理

当插入与表格式不适合的数据时,会出现警告,但是数据还是部分会插入到表中,

为了杜绝这种问题,我们通常数设置sql mode

这个模式要求比较严格,还有其他的设置mode就不一一说明了,需要指出的是此次的sql_mode只是在当前的sql对话有效,要想在sql客户端都有效,需要使用关键字global:

MySQL cookbook第10章读书笔记

时间: 2024-12-23 22:06:36

MySQL cookbook第10章读书笔记的相关文章

MySQL Cookbook第11章读书笔记

1,创建一个序列列兵生成序列值 使用auto_increment 如果显式地把ID设置成一个非NULL的值,有两个结果: a,这个值在表中出现,由于id列是主键,因而不允许重复,故会出现错误 b,这个值没有出现例如,你的表中id序列值为1到8,此时你插入一个新航,并设置为20,那么下一个自动产生的序列就会从21开始,而9-19的值变得不可用. 2,序列生成的行删除的效果 例如在insect表中: 比如要求只能是昆虫,删除millipede,millbug,多余的蚂蚁 删除2会给序列中间带来一个缺

MySQL cookbook第8章读书笔记

1,使用count函数生成摘要 函数函数使用很容易,对于MyISAM表来说count(*)语句很快,但是对于BDB或者InnoDB表来说,尽可能要避免使用它,因为该语句要求执行完整的扫描,速度很慢,解决办法是从information_schema数据库中提取table_rows数目 与if语句搭配使用: 创建视图来简化使用摘要(经常使用摘要的时候): 使用视图: 使用min(),max()也是类似的: 类似的还有sum()和avg()函数生成摘要: 2,使用distinct函数消除重复 3,查找

《构建之法》第8、9、10章读书笔记、读后感以及Sprint1总结

第八章讲述了软件需求的类型.利益相关者,获取用户需求的常用方法和步骤,竞争性需求分析的框架NABCD,四象限方法,还有就是项目计划和估计的技术. 其中软件需求分为: 1.获取和引导需求 2.分析和定义需求 3.验证需求 4.在软件产品的生命周期中管理需求 软件产品的利益相关者分别是 用户(或称最终用户).顾客(或称客户).市场分析师.监管机构.软件工程师 获取用户需求的常用方法和步骤为: 1.焦点小组 2.深入面谈 3.卡片分类 4.用户调查问卷 5.用户日志研究 6.人类学调查 7.眼动跟踪研

《构建之法》第8、9、10章读书笔记及读后感

第八章:需求分析 软件需求 人们(用户)的需求五花八门,作为一个软件团队要准确而全面地获取这些需求主要有以下四个步骤: 获取和引导需求.这一步骤也被叫做“需求捕捉”.软件团队需要为用户着想,设身处地,为用户引导出需求. 分析和定义需求.从各个方面获取的需求进行规整,定义需求的内涵从各个角度将需求量化. 验证需求.软件团队要跟利益相关者沟通,通过分析报告.技术原型.用户调查或演示等形式向他们验证软件团队对于这些需求的认知. 在软件产品的生命周期中管理需求. 对软件的需求,也可以从不同角度做以下的划

第七章读书笔记《深入理解计算机系统》

第七章 读书笔记<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 1.大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器

《内核设计与实现》第一章读书笔记

<内核设计与实现>第一章读书笔记 第一章:Linux内核简介 1.1 Unix的历史 Unix强大的特点 A.简洁,几百个系统调用,明确的设计目的 B.文件对待所有东西 C.移植性强(C语言) D.进程创建快,使用fork()系统调用. E.进程间通信元语,进程间通信机制 1.2 linux的简介 Linux系统的基础是内核.C库.工具库和系统的基本工具. 1.3 操作系统和内核简介 内核:管理者,操作系统的核心 通常一个内核由负责响应中断的中断服务程序和网络.进程间通信等系统服务共同组成.

Android深度探索——第九章读书笔记及心得

HAL模块 ——第9章读书笔记及心得 通过本章学习学会了Android中特有的与linux驱动交互的方法,即通过HAL模块.HAL模块本质上就是通过linux共享库(.so)与linux交互驱动,然后利用应用程序再访问linux共享库.每一个HAL共享库指定一个ID,在利用这个ID配合一定的规则找到linux共享库.知道了HAL对于Android的意义.知道了Android HAL的架构. HAL是建立在linux驱动之上的一套不属于linux内核的程序库.它属于linux内核层之上的应用层.H

Android深度探索——第二章读书笔记及心得

Android开发环境搭建 ——第二章读书笔记及心得 通过本章的学习了解了如何对Ubuntu Linux下的Android进行搭建,包括搭建Android应用程序开发环境.Android NDK开发环境和交叉编译环境的搭建.了解了搭建Android环境所需要的各种东西,了解了配置ADT的必要性—以便ADT能够找到Android SDK.知道了底层开发所需要的各种工具.学会了如何在Ubuntu下安装JDK.以及编译交叉编译环境,当初在学习Linux交叉环境编译的时候就不是特别成功,中间出了很多的错

Android深度探索——第四章读书笔记及心得

源代码的下载及编译 ——第四章读书笔记及心得 通过阅读书籍知道了Android源代码和Linux源代码的区别,了解了什么是Android移植.知道了Android移植就是Linux内核移植,而Linux内核移植主要就是Linux的驱动移植.为了开发和测试内核环境需要对环境进行搭建,进而知道了如何搭建环境.知道了如何下载Android/Linux源代码及配置Android源代码下载环境(并且知道Android源代码的下载并非一定要将4MB多的东西全部下载,也可以挑选着自己需要的东西下载,,可以利用