linux shell数据批量插入



shell操作mysql数据库,完成数据的批量插入


shell 操作mysql数据库完成数据的批量插入:


1.编写脚本


脚本文件:


#!/bin/sh
# 程序功能:向mysql数据库中执行批量自动插入
# 初始化参数
db_name="authdb"
table_name="server_auth_info"
import_file="./servers.txt"
 
#数据导入
cat $import_file |while read line
  do
     server_name=$(echo $line|cut -d " " -f1)
     machine_code=$(echo $line|cut -d " " -f2)
     echo "$server_name: $machine_code"
     sleep 1
     /usr/local/mysql5.6.17/bin/mysql -utest -p'xxxx' -e "insert into $db_name.$table_name(server_name,auth_code) values('$server_name','$machine_code')";
  done


data1.png

 

[root@WLJY01 lesson13]# /home/myscript/lesson13/auto_insert_mysqldb.sh


脚本解释


创建表:


CREATE TABLE `server_auth_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,   # 自增字段
  `server_name` char(50) NOT NULL DEFAULT '',
  `auth_code` char(50) DEFAULT NULL,
  PRIMARY KEY (`id`,`server_name`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8


2.调试脚本


[root@WLJY01 lesson13]# sh auto_insert_mysqldb.sh 
WLJY01: 41cec063968d5a4412f753778107c554
WLJY02: 41cec063968d5a4412f753778107c554
WLJY03: 41cec063968d5a4412f753778107c554
WLJY04: 41cec063968d5a4412f753778107c554
WLJY05: 41cec063968d5a4412f753778107c554

 

data2.png


3.脚本注意的地方


1)循环读取文件中行的方法;


2)字段的截取;


3)插入时主键的自增 。



shell操作PostgreSQL数据库,完成数据批量插入


shell 操作postgresql数据库完成数据的批量插入:


1.编写脚本


脚本文件:


#!/bin/sh
# 程序功能:向oracle数据库中执行批量插入
 
# 初始化参数
#db_name="authdb"
table_name="server_auth_info"
import_file="./servers.txt"
 
#数据导入
cat $import_file |while read line
  do
     server_name=$(echo $line|cut -d " " -f1)
     machine_code=$(echo $line|cut -d " " -f2)
     echo "$server_name: $machine_code"
     sleep 1
    / app3 / oracle / product / 11r2 / bin / sqlplus test / xxxxx @ localhost / orcl1 <<EOF
    insert into $table_name values(seq_id.nextval,'$server_name','$machine_code');
    commit;
    quit;
EOF
  done
[root@WLJY01 lesson13]# /home/myscript/lesson13/auto_insert_postgresqldb.sh


脚本解释


创建表:


CREATE TABLE server_auth_info (
  id SERIAL,   #自增字段
  server_name char(50),
  auth_code char(50),
  PRIMARY KEY (id,server_name)    
);


2.调试脚本


[root@WLJY01 lesson13]# sh auto_insert_postgresqldb.sh 
WLJY01: 41cec063968d5a4412f753778107c554
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1


data3.png


3.脚本注意的地方


1)循环读取文件中行的方法;


2)字段的截取;


3)插入时主键的自增 ;


4)与mysql数据库插入的区别在哪里?


authdb=# select * from authdb.public.server_auth_info;


public 为模式摘要,每当创建一个新的数据库时,PostgreSQL会自动创建该模式,当登录到 该数据库时,如果没有特殊的指定,将以public模式的形式操作各种数据对象。



shell操作ORACLE数据库,完成数据的批量插入


shell 操作oracle数据库完成数据的批量插入:


1.编写脚本


脚本文件:


#!/bin/sh
# 程序功能:向postgresql数据库中执行批量自动插入
 
# 初始化参数
db_name = " authdb "
table_name = " server_auth_info "
import_file = " . / servers.txt "
 
#数据导入
cat $import_file |while read line
  do
     server_name = $ ( echo $line|cut -d " " -f1 )
     machine_code = $ ( echo $line|cut -d " " -f2 )
     echo " $ server_name : $ machine_code "
     sleep 1
     / usr / local / postgresql / bin / psql -U postgres -d $db_name  -h localhost -c "INSERT INTO $db_name.public.$table_name(server_name,auth_code) VALUES ('$server_name','$machine_code')"   
  done
[root@WLJY01 lesson13]# /home/myscript/lesson13/auto_insert_oracledb.sh


脚本解释


创建表:


创建序列:CREATE SEQUENCE seq_id start with 1 increment by 1; 


创建表: CREATE TABLE server_auth_info (id int PRIMARY KEY,server_name char(50),auth_code char(50));


注意:id是自增的,在插入时取序列seq_id.nextval的值做为id值。


2.调试脚本


[oracle@terra_test ~]$ sh auto_insert_oracledb.sh 
WLJY01: 41cec063968d5a4412f753778107c554
SQL*Plus: Release 11.2.0.1.0 Production on Mon Sep 28 17:52:28 2015
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> 
1 row created.
SQL> 
Commit complete.


3.脚本注意的地方


循环读取文件中行的方法;


字段的截取;


oracle自增主键的引用方法(序列seq_id.nextval);


 qlplus 交互模式下,如何插入数据。


data4.png



课后作业


1.掌握使用shell 脚本对mysql、postgresql、oracle 数据库批量导入数据的方法;


2.掌握字符串按照某种分割符进行截取的方法;


3.掌握用“<<”定界符作为行输入来执行SQL语句的方法。 



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

麦子大聚惠,豪华礼包你领了吗?

客服热线 400-862-8862

回到顶部