本文出处:http://blog.csdn.net/u012377333/article/details/47022699

从上面的几篇文章中,能够知道怎样使用Shell创建数据库使用Shell创建数据表,本文继续介绍Shell结合MySQL的使用--怎样使用Shell批量插入数据?

这里涉及一点MySQL其它的知识。怎样导入或者导出数据?

首先做这些之前,须要依照上面所介绍的创建好数据库和数据库表,然后就是将要查询到数据库中的数据写到CSV文件里。因为个人比較懒。选择从一个现成的数据库中导出一部分数据用于測试。

创建了一个名字叫做t_prov_city_area_street的数据表,关于怎样创建这个表能够去我的资源里面下载创建该表的sql脚本,该脚本的名字是t_prov_city_area_street.sql。然后就是使用上面介绍的方法,导出关于全部省的信息。导出方法例如以下:

<span style="font-family:Microsoft YaHei;font-size:14px;">SELECT * FROM t_prov_city_area_street WHERE level=3 INTO OUTFILE '/tmp/prov_csv' FIELDS TERMINATED BY ',';</span>

我们就会得到一个保存着全部省级信息的CSV文件prov.csv,相同能够在资源里面找到这个文件。

接下来就是重点部分了Shell脚本批量插入数据:

#!/bin/sh

#Author:	chisj
#Date: 2015.7.23
#Describe Insert Data TO Table 'sct_Province' #The username of mysql database
USER="root" #The password of mysql database
PASS="dragonwake" #The datebase name will be created
DATABASE="SmartCare" TABLE="sct_Province" TABLE_DATA="prov.csv" if [ -f ${TABLE_DATA} ]; then echo "File ${TABLE_DATA} Existed." else echo "File ${TABLE_DATA} Not Existed."
echo
exit 2 fi while read line;
do query=`echo $line | awk -F, '{printf("\"%s\", \"%s\", \"%s\", \"%s\"", $2, $3, $4, $5)}'`
statement=`echo "insert into ${TABLE}(ProvinceCode, ParentID, ProvinceName, Level) values($query)"`
echo $statement mysql -u $USER -p$PASS $DATABASE << EOF > /dev/null
insert into ${TABLE}(ProvinceCode, ParentID, ProvinceName, Level) values($query);
EOF done < $TABLE_DATA if [ $? -eq 0 ]; then echo "Insert Data Into $TABLE Success." fi

运行shell脚本的时候的截图,能够參考一下:

插入完毕之后。查询结果的截图:

因为我希望主键ProvinceID是自增长的。不想使用csv里面的数据,全部脚本里面有一点点的改变,就是

query=`echo $line | awk -F, '{printf("\"%s\", \"%s\", \"%s\", \"%s\"", $2, $3, $4, $5)}'`
statement=`echo "insert into ${TABLE}(ProvinceCode, ParentID, ProvinceName, Level) values($query)"`

query=`echo $line | awk -F, '{printf("\"%s\", \"%s\", \"%s\", \"%s\", \"%s\"", $1, $2, $3, $4, $5)}'`
statement=`echo "insert into ${TABLE} values($query)"`

以及

insert into ${TABLE}(ProvinceCode, ParentID, ProvinceName, Level) values($query);</span>

insert into ${TABLE} values($query);

替换就能够了。

在验证数据是否插入成功的时候。会发现有乱码,我在创建数据的时候有设置为utf8格式,为什么还会这种,后来我重新启动了mysqld服务就能够正常看到中文了。

全部的脚本和CSV文件:Shell脚本批量加入CSV数据到MySQL

基于CentOS的MySQL学习补充四--使用Shell批量从CSV文件里插入数据到数据表的更多相关文章

  1. 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表

    本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...

  2. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  3. Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)

    Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建) 具体案例:局域网内有两台主机,一台Linux.一台Windows,现在需要配置一台Cacti监控服务器对这两台 ...

  4. PHP Apache Access Log 分析工具 拆分字段成CSV文件并插入Mysql数据库分析

    现在需要分析访问日志,怎么办? 比如分析D:\Servers\Apache2.2\logs\access2014-05-22.log http://my.oschina.net/cart/针对这个问题 ...

  5. 转MYSQL学习(四) 查询

    MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...

  6. MySQL学习(四) SQL连接查询

    更多情况下,我们查询的数据来源于多张表,所有有必要了解一下MySQL中的连接查询. SQL中将连接查询分成四类:交叉连接,内连接,外连接和自然连接. 数据准备 student表 -- -------- ...

  7. MySQL学习(四)Join 等开发常用的操作 --- 2019年2月

    1.查数据太多不会把内存用光 InnoDB 的数据是保存在主键索引上,然后索引树分割保存在数据页上,数据页存在内存中/磁盘.change buffer 就是先把修改操作记录,然后读数据的时候,内存没有 ...

  8. 烂泥:学习tomcat之通过shell批量管理多个tomcat

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使用tomcat做web容器,为了更有效的利用服务器的性能,我们一般部署多个 ...

  9. Linux 用 shell 脚本 批量 导入 csv 文件 到 mysql 数据库

    前提: 每个csv文件第一行为字段名 创建的数据库字段名同csv 文件的字段名 1. 批量导入 多个 csv 文件 for file in ./*.csv;do mv $file tablename. ...

随机推荐

  1. WPF中的导航框架(一)——概述

    有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...

  2. Spring集合 (List,Set,Map,Properties) 实例

    下面例子向您展示Spring如何注入值到集合类型(List, Set, Map, and Properties). 支持4个主要的集合类型: List – <list/> Set – &l ...

  3. gdb参考手册

    http://www.sourceware.org/gdb/current/onlinedocs/gdb.html

  4. Ext各种对话框

    <HTML> <HEAD> <TITLE>选择确认对话框</TITLE> <link rel="stylesheet" typ ...

  5. System.Threading.Tasks并发和异步代码使用

    main.cs System.Threading.Tasks.Parallel.For(0, 10, i =>            {                TestLock test ...

  6. C#类和结构体的异同点简单总结

    类和结构的异同点?异:  1.关键字不同 一个是class,一个是struct  2.类型不同,一个是引用类型,一个是值类型(一个堆区,一个栈区)        3.成员不同,结构体没有默认的构造函数 ...

  7. SpringMVC的学习

    在看<跟开涛学SpringMVC.pdf> /Users/baidu/Documents/Data/Interview/Java Spring Web MVC 也是服务到工作者模式的实现, ...

  8. Power Desginer系列03【转载】

    在PowerDesigner中设计物理模型1——表和主外键 在PD中建立物理模型由以下几种办法: 直接新建物理模型. 设计好概念模型,然后由概念模型生成物理模型. 设计好逻辑模型,然后由逻辑模型生成物 ...

  9. 130道ASP.NET面试题,我只会80道!

    1. 简述 private. protected. public. internal 修饰符的访问权限.答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员 ...

  10. windows下读取Linux分区软件

    导读 ext3等日志型文件系统是Linux中被广泛应用的,通常是许多流行Linux发行版默认的文件系统.etx4也是Linux下的日志型文件系统,被设计作为ext3的继任者.他消除了64位存储限制,是 ...