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. bzoj 2792: [Poi2012]Well【二分+贪心】

    #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const ...

  2. 洛谷P2221 [HAOI2012]高速公路(线段树+概率期望)

    传送门 首先,答案等于$$ans=\sum_{i=l}^r\sum_{j=i}^r\frac{sum(i,j)}{C_{r-l+1}^2}$$ 也就是说所有情况的和除以总的情况数 因为这是一条链,我们 ...

  3. 只需3步,即可将你的Chromium Edge 浏览器设置成中文

    最近,Chromium Edge 浏览器推出了添加语言包的功能,于是我们可以轻松将其界面设置成中文的. 第1步: 升级浏览器到最新版 在Chromium Edge 浏览器的地址栏中输入: edge:/ ...

  4. 搜索刷题记录by cellur925

    我好菜啊!连暴搜都不会! 注意边界退出! 特开此帖,记录搜索学习之路!(逃) 1.全排列 2.八皇后 3.数的划分 由于此题有同一划分方法算一个的限制,我们为了避免搜多,可以使搜出的结果满足单调不降性 ...

  5. Mybatis的全局配置文件标签介绍(mybatis-config.xml)

    全局配置文件中本人只记录了常用的几个  typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, dat ...

  6. 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本平台下,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz) ...

  7. Linux基本命令—mkfs/mount/umount/wget/yes/make/passwd

    mkfs:用来在特定的分区建立Linux文件系统,是make filesystem的缩写. 例子:mkfs .ext3 /dev/mmcblk0p1      //把该设备格式化成ext3文件系统 m ...

  8. shiro 登录

    @Controllerpublic class LoginController { @RequestMapping(value="/login") public @Response ...

  9. dalvik.system.VMRuntime 隐藏api的迷惑

    [Android UI界面]关于dalvik.system.VMRuntime 的 使用迷惑 我也遇到了相同问题.不知楼主现在解决了没有? 回答1: [Android UI界面]关于dalvik.sy ...

  10. 移动端rem单位用法

    1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单位.它们 ...