select into outfile用法

MySQL中,可以使用SELECT...INTO OUTFILE语句将表的内容导出为一个文本文件。

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

  

“OPTION”参数为可选参数选项,其可能的取值有:

  • FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符。默认值是“\t”。
  • FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符。默认情况下不使用任何符号。
  • FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR、VARCHAR和TEXT等字符型字段。默认情况下不使用任何符号。
  • FIELDS ESCAPED BY '字符':设置转义字符,只能为单个字符。默认值为“\”。
  • LINES STARTING BY '字符串':设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
  • LINES TERMINATED BY '字符串':设置每行数据结尾的字符,可以为单个或多个字符。默认值是“\n”。

举个栗子:

select * from raptor.loan where DATE_FORMAT(create_at,'%Y-%m-%d')="2018-10-21" or DATE_FORMAT(update_at,'%Y-%m-%d')="2018-10-21" or repaired=1 into outfile "/tmp/raptor_loan_incre_2018-10-21.csv" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';

将raptor.loan表2018-10-21日的增量数据导出到excel表,字符串为字段之间的分隔符 | ,每行数据结尾的字符 \r\n回车

load data infile用法

可以将select into outfile 导出的文本文件导入数据库

load data infile语句从一个文本文件中以很高的速度读入一个表中。使用这个命令之前,mysqld进程(服务)必须已经在运行。为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。

LOAD DATA INFILE "/path/to/file" INTO TABLE table_name;
注意:如果导出时用到了FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'语句,那么LOAD时也要加上同样的分隔限制语句。还要注意编码问题。

举个栗子:

LOAD DATA INFILE '/tmp/raptor_loan_track_incre_2018-10-21.csv' REPLACE INTO TABLE raptor.loan_track FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';

将文件/tmp/raptor_loan_track_incre_2018-10-21.csv导入raptor.loan_track表

报错

1、在操作导入的时候发现会出现主键冲突报错,原因是有两张表是全量备份的,再导入时可以使用参数REPLACE,MySQL会把相同的先干掉,再插入新的值。replace关键词控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行

2、导入时报错

原因是因为excel表中第6716行 部分字段存在空值,无法导入

数据库差量数据备份脚本

#!/bin/bash
date2=$(date -d yesterday +%Y-%m-%d)
sql1="select * from raptor.loan where DATE_FORMAT(create_at,'%Y-%m-%d')=\"${date2}\" or DATE_FORMAT(update_at,'%Y-%m-%d')=\"${date2}\" or repaired=1 into outfile \"/tmp/raptor_loan_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql2="select * from raptor.loan_track where DATE_FORMAT(create_at,'%Y-%m-%d')=\"${date2}\" or DATE_FORMAT(update_at,'%Y-%m-%d')=\"${date2}\" or repaired=1 into outfile \"/tmp/raptor_loan_track_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql3="select * from loan_extend where DATE_FORMAT(create_at,'%Y-%m-%d')=\"${date2}\" into outfile \"/tmp/raptor_loan_extend_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql4="select * from tenants into outfile \"/tmp/raptor_tenants_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql5="select * from user_privilege into outfile \"/tmp/raptor_user_privilege_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql6="select * from users into outfile \"/tmp/raptor_users_incre_${date2}.csv\" FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';"
sql7="update loan_track set repaired=0 where repaired=1;"
sql8="update loan set repaired=0 where repaired=1;"
#sql9="select count(1) from raptor.loan where DATE_FORMAT(create_at,'%Y-%m-%d')=\"${date2}\" or DATE_FORMAT(update_at,'%Y-%m-%d')=\"${date2}\" or repaired=1"
execute_sql(){
/usr/local/mysql/bin/mysql -u xxxxxxxxx -p'xxxxxxxxxxxxxxxx' $DB -e "${1}"
if [ -f /tmp/${2}_incre_${date2}.csv ]
then
scp -P xxxxx /tmp/${2}_incre_${date2}.csv hadoop_ftp@xx.xx.xx.xx:/data/sftp_docker/hadoop_ftp/raptor_repair/
if [ $? == 0 ]
then
cd /tmp/
rm ${2}_incre_${date2}.csv
fi
fi
}
/usr/local/mysql/bin/mysql -u xxxxxxxx -p'xxxxxxxxxxxxxxx' raptor -e "${sql9}" > /root/sh/count.log
execute_sql "${sql1}" "raptor_loan"
execute_sql "${sql2}" "raptor_loan_track"
execute_sql "${sql3}" "raptor_loan_extend"
execute_sql "${sql4}" "raptor_tenants"
execute_sql "${sql5}" "raptor_user_privilege"
execute_sql "${sql6}" "raptor_users"
execute_sql "${sql7}"
execute_sql "${sql8}"

  

select into outfile 与 load data infile的更多相关文章

  1. MySQL select into outfile 和 load data infile数据跨库转移

    select into outfile用法 SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINAT ...

  2. mysql load data infile的使用 和 SELECT into outfile备份数据库数据

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...

  3. MySQL 之 LOAD DATA INFILE 快速导入数据

    SELECT INTO OUTFILE > help select; Name: 'SELECT' Description: Syntax: SELECT [ALL | DISTINCT | D ...

  4. mysql 的load data infile

    LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.如果指定LOCAL关键词,从客户主机读文件.如果LOCAL没指定,文件必须位于服务器上.(LOCAL在MySQL3.22. ...

  5. mysql导入数据load data infile用法整理

    有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. ...

  6. mysql高效导入导出load data [infile][outfile]用法

    一.MySQL高效导入数据的方法load data infile load data infile语句从一个文本文件中以很高的速度读入一个表中.使用这个命令之前,mysqld进程(服务)必须已经在运行 ...

  7. LOAD DATA INFILE Syntax--官方

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_n ...

  8. mysql文件导入到数据库load data infile into table 的使用例子

    load data infile "C:/Users/Administrator/Desktop/1.txt"into table 要一个已经存的表名 字段默认用制表符隔开 文件 ...

  9. mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )

    一.概述 上篇讲到的表的数据导出(select .. into outfile 或者mysqldump),这篇继续讲表的数据导入,导入也同样有二个方法,分别是load data infile... 和 ...

随机推荐

  1. 洛谷 P3825 [NOI2017]游戏 【2-SAT+状压】

    UOJ和洛谷上能A,bzoj 8ms即WA,现在也不是知道为啥--因为我太弱了 先看数据范围发现d非常小,自然想到了状压. 所以先假装都是只能跑两种车的,这显然就是个2-SAT问题了:对于x场没有hx ...

  2. SQL Server 语法注意

    1.order by select a1,a1 from  temp order by a1 此语句在高版本中执行提示a1列名不明确,在低版本中执行成功!

  3. input type="file"文件上传到后台读取

    html页面(表单采用bootStrap) js部分: //更换头像时把上传的图片post方式到控制器 <script type="text/javascript"> ...

  4. match email address

    [A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)

  5. python数据库连接例子

    import sqlite3 conn = sqlite3.connect('food.db') curs = conn.cursor() curs.execute(''' CREATE TABLE ...

  6. cmdb客户端服务器信息采集一

    #cmdb脚本程序一 #!/usr/bin/python # coding:utf-8 """ 采集机器自身信息 1 主机名 2 内存 3 ip与mac地址 4 cpu信 ...

  7. FileStream和BinaryReader,BinaryWriter,StreamReader,StreamWriter的区别

    FileStream对于在文件系统上读取和写入文件非常有用,FileStream缓存输入和输出,以获得更好的性能.FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字 ...

  8. IOS编译报错:objc-class-ref in AppDelegate.o之解决方案 Xcode7

    Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_QQApiInterface", referenced from ...

  9. BufferedStream

    处理流,包在别的流上面的流,相当于包到别的管道上面的管道. 缓冲刘: 缓冲流,就是带小桶的带缓冲区的. 那两个方法知道一下就好了,不必深究…… bis.read()    read一下读一个出来 bi ...

  10. Kali linux 2016.2(Rolling) 的详细安装(图文教程)附安装VMare Tools 增强工具

    写在前面的话 因读研期间,实验室团队需要,所以,接触上了Kali Linux,需去获得网络安全方面的数据,即数据和信息收集.以便为后续的数据处理和分析,准备! 用到hadoop和spark.机器学习等 ...