http://www.maiziedu.com/wiki/linux/data/
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
[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
3.脚本注意的地方
1)循环读取文件中行的方法; while read line
2)字段的截取;cut -d
3)插入时主键的自增 。
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
3.脚本注意的地方
1)循环读取文件中行的方法;
2)字段的截取;
3)插入时主键的自增 ;
4)与mysql数据库插入的区别在哪里?
authdb=# select * from authdb.public.server_auth_info;
public 为模式摘要,每当创建一个新的数据库时,PostgreSQL会自动创建该模式,当登录到 该数据库时,如果没有特殊的指定,将以public模式的形式操作各种数据对象。
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 交互模式下,如何插入数据。