mysql导入数据loaddatainfile用法,CSV文件导入导mys

1.导入

基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[character set gbk]
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]

mysql导入数据loaddatainfile用法

mysql导入数据load data infile用法

主干语法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]

load data infile语句从贰个文书文件中以相当高的过程读入五个表中。使用那么些命令之前,mysqld进程(服务)必需已经在运转。为了安全原因,当读取位于服务器上的文书文件时,文件必得处于数据库目录或可被全数人读取。别的,为了对服务器上文件使用load data infile,在服务器主机上您不能够不有file的权能。 1 假若你内定关键词low_priority,那么MySQL将会等到未有其余人读这么些表的时候,才把插入数据。能够使用如下的指令:
load data low_priority infile "/home/mark/data sql" into table Orders; 2 假使内定local关键词,则注脚从客商主机读文件。假诺local没钦点,文件必得放在服务器上。 3 replace和ignore关键词调整对现存的独占鳌头键记录的再一次的管理。假如你钦命replace,新行将取代有一致的独步一时键值的依存行。假诺您钦命ignore,跳过有独一键的并存行的重复行的输入。假使您不钦定别的三个挑选,当找到重复键时,出现二个荒唐,並且文本文件的多余部分被忽略。比如: load data low_priority infile "/home/mark/data sql" replace into table Orders; 4 分隔符 (1) 田野先生s关键字钦命了文本记段的撤销合并格式,如若用到这些首要字,MySQL分析器希望观察至稀有上边包车型地铁三个抉择:
terminated by分隔符:意思是以什么样字符作为分隔符
enclosed by字段括起字符
escaped by转义字符 terminated by描述字段的分隔符,默许意况下是tab字符(t)
enclosed by描述的是字段的括起字符。
escaped by描述的转义字符。默许的是反斜杠(backslash: ) 例如:load data infile "/home/mark/Orders txt" replace into table Orders fields terminated by',' enclosed by '"'; (2)lines 关键字钦赐了每条记下的相间符默以为'n'即为换行符 即使七个字段都钦命了那田野(field)s必须在lines此前。如若不钦定田野s关键字缺省值与若是你那样写的等同: 田野先生s terminated by't' enclosed by ’ '' ‘ escaped by'\' 假若你不点名四个lines子句,缺省值与固然你如此写的均等: lines terminated by'n' 举个例子:load data infile "/jiaoben/load.txt" replace into table test 田野先生s terminated by ',' lines terminated by '/n'; 5 load data infile 能够按钦定的列把文件导入到数据库中。 当大家要把多少的一有的剧情导入的时候,,要求插足一些栏目(列/字段/田野先生)到MySQL数据库中,以适应一些外加的需求。比方说,我们要从Access数据库晋级到MySQL数据库的时候 上面包车型客车例证展现了什么样向钦点的栏目(田野同志)中程导弹入数据:
load data infile "/home/Order txt" into table Orders(Order_Number, Order_Date, Customer_ID); 6 当在服务器主机上找出文件时,服务器使用下列准则:
(1)要是给出二个纯属路线名,服务器使用该路线名。
(2)倘使给出贰个有三个或八个放置部件的周旋路线名,服务器相对服务器的数量目录搜索文件。
(3)如若给出八个并未有放置部件的多少个文件名,服务器在现阶段数据库的数据库目录找寻文件。
举个例子说: /myfile txt”给出的公文是从服务器的数额目录读取,而作为“myfile txt”给出的一个文书是从当前数据库的数据库目录下读取。 注意:字段中的空值用N表示

mysql导入数据load data infile用法 基本语法:load data [low_priority] [local] infile 'file_name txt' [replace | ignore] into table t...

1. select into outfile导出表数据

SELECT [列名] FROM table [WHERE 语句] INTO OUTFILE '目标文件' [OPTION];

此中的option为可选参数,在缺省的情景下,暗中同意的表现为:

  1. 在字段值间加上制表符。

  2. 不用别样引号字符封装字段。

  3. 使用 “” 转义出现在字段值中的定位符、换行符或`' 字符实例。

  4. 在行的结尾处加上换行符。

那么option的可选参数为田野s子句和lines子句,在田野同志s子句下有八个亚子句,分别为:

terminated by(用来内定字段值之间的符号),

enclosed by(用来钦定包裹文件中字符值的标识),

escaped by.

若果钦命了田野同志s子句,那么那多个最少要钦命贰个.

在lines子句下有terminated by(钦点一行截止的标记),starting by(设置每行数据开首的字符)

例子:

fields terminated by ',' //fields子句enclosed by '"'lines terminated by 'rn' //lines子句

上面来演示二回缺省option选项的效劳:

这两天有如此的一个表,user_info

mysql> select * from user_info; ---- ---------- | id | nickname | ---- ---------- | 1 | 昵称1 || 2 | 昵称2 || 3 | 昵称3 | ---- ---------- 3 rows in set 

执行select into outfile语句:

mysql> select * from user_info into outfile '/home/xiaoma/file.txt';ERROR 1290 : The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

没悟出的是mysql报错了,原本是mysql暗许只好导出文件到三个钦定的公文夹内,现在实行select @@secure_file_priv看看:

 mysql> select @@secure_file_priv; ----------------------- | @@secure_file_priv | ----------------------- | /var/lib/mysql-files/ | ----------------------- 1 row in set 

现今再改一下:

mysql> select * from user_info into outfile '/var/lib/mysql-files/file.txt';Query OK, 3 rows affected 

图片 1

怎会这么吧,原本啊要是选择 select ... into outfile ...方式导出数据,需求分为三种景况,windows系统下,能够任性内定相应的目录,假诺是linux系统的话,只好导出到钦定的目录,包涵上面包车型大巴load data infile语句的实施也一致如此管理

如若说导出多少到文件从此出现乱码的情景,那么能够钦点字符集:

mysql> select * from user_info into outfile '/var/lib/mysql-files/file1.txt' character set gbk;Query OK, 3 rows affected 

  导入实例

1 load data infile 'csv文件路径\test.csv' 
2 replace into table 表名              
3 fields terminated by ',' 
4 optionally enclosed by '"' 
5 lines terminated by 'rn' 
6 ignore 1 lines(Id,@name,password);

  说明:

         首先行正是导入文本;

         第二行参看语法就能够发觉有八个词:replace 和 ignore 。replaceignore要害词调节对现成的天下无双键记录的再一次的拍卖。假设你钦点replace,新行将替代它有平等的并世无两键值的并存行。要是你钦命ignore,跳过有独一键的共处行的双重行的输入。纵然您不钦定其余三个取舍,当找到重复键时,出现一个错误,何况文本文件的剩下部分被忽视。

         第三~四行相当的粗略正是各种具体字段内容之间是以逗号隔断的,那就以逗号分开。 erminated by描述字段的分隔符,暗中同意情状下是tab字符(t) 。enclosed by描述的是字段的括起字符,正是说字段中一经有引号,就作为是字段的一片段。 语法中还恐怕有八个是 escaped by, 它陈诉的是转义字符。暗中认可的是反斜杠(backslash: )

*        第五行 lines terminated by是对每行实行剪切,这里要留意三个标题,如若csv文件是在windows下转移,那分割用 ‘rn’,linux下用 ‘n’。*

*        第六行中 ignore 1 lines 是忽略第一行,因为第一行往往是字段名,前面括号中有个字段很极度 @name,它是说要是csv文件中有个字段作者不想插进去,那就把对应字段名改成@name.*

具体操作:

step1.准备CSV文件

      1.在数据库中国建工总企业test数据表,表属性如下:

    图片 2      2.csv文书的积存内容如下,命名叫test1.csv,存款和储蓄地点:“C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/test1.csv”:

图片 3

 

         验证.csv编码格式是或不是科学,必需保管导入数据的编码格式是ANSI编码格式

step2.数量导入:

         1.询问已有数据库:show databases;

         2.采取这么些数据库,使用命令:use flight_analysis;

         3.询问大家后面创设的表格test是不是在test数据库中,使用命令:show tables;

         4.导入数据库:

          

#导入数据中不包含中文
1   load data infile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/test1.csv' --CSV文件存放路径
2 
3   into test student--要将数据导入的表名
4 
5   fields terminated by ',' optionally enclosed by '"' escaped by '"'
6 
7   lines terminated by 'rn';

 

#导入数据中包含中文

load data infile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/test1.csv' --CSV文件存放路径

into table test character set gb2312 --要将数据导入的表名

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by 'rn';

1 #忽略第一行
2 load data infile "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/datatest1.csv"
3 into table data_test
4 fields terminated by ',' optionally enclosed by '"' escaped by '"'
5 lines terminated by 'rn'
6 ignore 1 lines;

 

2. load data infile将文件数量导入到表中(select into outfile的反操作)

导入文本时要留意编码难题,也要抬高同样的相间限制语句

先看看此语句的结构:

load data [low_priority] [local] infile 'file_name txt' [replace | ignore]into table tbl_name[fields[terminated by't'][OPTIONALLY] enclosed by ''][escaped by'' ]][lines terminated by'n'][ignore number lines][(col_name, )]

由地点的布局图,先深入分析一下这些讲话结构图吧:

若钦赐此关键词,MySQL将会等到未有别的人读那一个表的时候,才把插入数据

若果钦赐local关键词,则申明从客商主机读文件。如若local没钦定,文件必需放在服务器上

当插入数据的时候,对于再一次插入现成的唯一键的行,在私下认可景况下,mysql会报错,然后中断插入数据,若内定replace关键词,新行将会交替原现存的行,若内定ignore关键词,就能够直接跳过对于再度插入行的操作.

田野(field)s子句富含3个亚子句,若钦赐了此子句那么必供给起码钦定二个亚子句,亚子句分别为:2.4.1 terminated by 描述字段的分隔符,默许情形下是tab字符2.4.2 enclosed by 描述的是字段的括起字符.2.4.3 escaped by 描述的转义字符.暗中认可的是反斜杠

例如:

mysql> load data infile '/var/lib/mysql-files/loadInFile.txt' into table user_info fields terminated by ',';Query OK, 3 rows affected Records: 3 Deleted: 0 Skipped: 0 Warnings: 0

lines子句独有两个亚子句,terminated by 钦命一行甘休的标记.

load data infile '/var/lib/mysql-files/loadInFile.txt' into table user_info character set gbk fields terminated by ',';

导出

1 select * from 表名
2 into outfile '导出路径\test.csv' 
3 fields terminated by ',' 
4 optionally enclosed by '"' 
5 escaped by '"' 
6 lines terminated by 'n';

 

 

 

         

 

3. mysqldump 下令备份数据库(会备份表结会谈数目)

先来探视用此命令时的组织

mysqldump -uroot -p [database name] > [dump file] //其中root为mysql账号名

mysqldump -uroot -p test > test.sql

如果加上--opt参数则生成的dump文件中稍有不同: . 建表语句包含drop table if exists tableName . insert之前包含一个锁表语句lock tables tableName write,insert之后包含unlock tables

mysqldump -uroot -p --opt test > test.sql

mysqldump -uroot -p --databases test blog_test > /test.sql

mysqldump -uroot -p --no-data test > test.sqlmysqldump -uroot -p --no-data test > test.sql

mysqldump -uroot -p --all-databases > /all.sql

语法结构如下:

mysql -u root -p [dbname] < backup.sql

只要备份了具有的数据库,然后只回复部分的数据库:

mysql -uroot -p test < all.sql

除此而外用这一个语法结构,还足以用source命令恢复生机数据库,举例有二个test数据库,有一个test.sql的备份文件,进入mysql后,use test切换成test数据库底下,然后实行:

mysql>source /mysql.sql;

构成Linux的cron命令达成定期备份

比如说供给在每天中午1:30备份有个别主机上的富有数据库并压缩dump文件为gz格式,那么可在/etc/crontab配置文件中步向上边代码行:

30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date ' %m-%d-%Y'`.sql.gz最近5个参数分别表示分钟、时辰、日、月、年,星号表示大肆。date ' %m-%d-%Y'得到当今日期的MM-DD-YYYY格式。

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:mysql导入数据loaddatainfile用法,CSV文件导入导mys

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。