使用(oracle)sql语句采集数据时,数据之间的分割符号要设置成数据中没有的
2017-07-22 10:49
585 查看
使用sql语句采集数据时,数据之间的分割符号要设置成数据中没有的
1、使用(oracle)sql语句查询一下,检测sql语句是否正确
select
ID ||'^'||
NAME ||''^"||
SEX ||'^'||
CLASS
from student;
2、若上边sql语句正确,将其修改为下边部分,命名文件005_表名.sql
select
ID ||{spletor}||
NAME ||{spletor}||
SEX ||{spletor}||
CLASS
from student;
3、采集数据sql语句存放路径
/usr/local/xuanfeng/etl/scripts
4、编写oracle2file.json文件(采集oracle数据库中的文件,转化为csv文件)
[
{
"id": "005_表名",
"datatime":
{
"unit": "day",
"offset": -1 #设置为前一天
},
"source":
{
"host": "IP",
"port": 11521,
"username": "aaa",
"password": "bbb",
"dbname": "ccc",
"script": "005_表名.sql"
},
"target":
{
"path": "/data/gatherfiles/datafiles/表名/005/YYYYMMDD",
"file": "005_表名_YYYYMMDD.csv"
},
"content":
{
"prefix": "",
"suffix": "",
"empty": "",
"gap": "\\005" #将数据之间的间隔符设置为口符号
}
},
]
5、oracle2file.json文件存放路径
/usr/local/xuanfeng/etl/etc
6、编写logstash配置文件,命名为005_表名.conf
input {
file {
path =>[
"/data/gatherfiles/datafiles/表名/005/*/*.csv"
]
start_position => "beginning" #从什么位置读取
sincedb_path => "/data/elk/sincedb/005"
type => "005"
tags => ["表名", "gather"]
}
}
filter {
if [type]=="005"{
csv {
columns =>["ID","NAME","SEX","CLASS"]
separator =>
quote_char => "‰"
}
date {
match => ["STBUSEDATE", "yyyyMMddHHmmss"]
target => "STBUSEDATE"
}
date {
match => ["HGUSEDATE", "yyyyMMddHHmmss"]
target => "HGUSEDATE"
}
mutate{
remove_field => ["message"]
}
}
}
output {
if [type]=="005"{
elasticsearch {
hosts => ["133.37.22.180:9200"]
index => "gather-%{type}" #在es里面建立的索引名
document_type => "%{type}" #文档类型,一般用input里面配置的type
flush_size => 20000
idle_flush_time => 10
sniffing => true
template_overwrite => true
codec => "json"
}
}
}
7、logstash配置文件路径
/data/app/etc/logstash/conf.d/
8、采集数据存放执行命令路径
/usr/local/xuanfeng/etl/bin
9、执行采集命令
./oracle2file -c 005_表名 -f 005 -n 001 -o -t 20170720000000
用法: oracle2file [-options] name [args...]
-c string
调度执行配置编号
-f string
调度流程编号
-n string
调度流程节点编号
-o 启用详细输出<选项>
默认:false
-t string
调度执行时间
格式:[YYYYMMDDHH24MISS]
10、生成csv文件存放路径
/data/gatherfiles/datafiles/
11、文件读取保留值路径
/data/elk/sincedb/
12、使用logstash命令将数据存储在es中
logstash -f 005_表名.conf
13、在终端使用elasticsearch中的curl命令查询数据是否导入成功
curl -XGET 'localhost:9200/_cat/indices?v&pretty' #查看gather-005索引是否创建成功
#查询student表中name字段中,值为Lihua的是否存在
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"query":{
"match":{
"NAME":"Lihua"
}
}
}'
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"query":{
"term":{
"NAME.keyword":"Lihua"
}
}
}'
查询name为Lihua的前十个
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"size":10,
"query":{
"term":{
"NAME.keyword":"Lihua"
}
}
}'
1、使用(oracle)sql语句查询一下,检测sql语句是否正确
select
ID ||'^'||
NAME ||''^"||
SEX ||'^'||
CLASS
from student;
2、若上边sql语句正确,将其修改为下边部分,命名文件005_表名.sql
select
ID ||{spletor}||
NAME ||{spletor}||
SEX ||{spletor}||
CLASS
from student;
3、采集数据sql语句存放路径
/usr/local/xuanfeng/etl/scripts
4、编写oracle2file.json文件(采集oracle数据库中的文件,转化为csv文件)
[
{
"id": "005_表名",
"datatime":
{
"unit": "day",
"offset": -1 #设置为前一天
},
"source":
{
"host": "IP",
"port": 11521,
"username": "aaa",
"password": "bbb",
"dbname": "ccc",
"script": "005_表名.sql"
},
"target":
{
"path": "/data/gatherfiles/datafiles/表名/005/YYYYMMDD",
"file": "005_表名_YYYYMMDD.csv"
},
"content":
{
"prefix": "",
"suffix": "",
"empty": "",
"gap": "\\005" #将数据之间的间隔符设置为口符号
}
},
]
5、oracle2file.json文件存放路径
/usr/local/xuanfeng/etl/etc
6、编写logstash配置文件,命名为005_表名.conf
input {
file {
path =>[
"/data/gatherfiles/datafiles/表名/005/*/*.csv"
]
start_position => "beginning" #从什么位置读取
sincedb_path => "/data/elk/sincedb/005"
type => "005"
tags => ["表名", "gather"]
}
}
filter {
if [type]=="005"{
csv {
columns =>["ID","NAME","SEX","CLASS"]
separator =>
quote_char => "‰"
}
date {
match => ["STBUSEDATE", "yyyyMMddHHmmss"]
target => "STBUSEDATE"
}
date {
match => ["HGUSEDATE", "yyyyMMddHHmmss"]
target => "HGUSEDATE"
}
mutate{
remove_field => ["message"]
}
}
}
output {
if [type]=="005"{
elasticsearch {
hosts => ["133.37.22.180:9200"]
index => "gather-%{type}" #在es里面建立的索引名
document_type => "%{type}" #文档类型,一般用input里面配置的type
flush_size => 20000
idle_flush_time => 10
sniffing => true
template_overwrite => true
codec => "json"
}
}
}
7、logstash配置文件路径
/data/app/etc/logstash/conf.d/
8、采集数据存放执行命令路径
/usr/local/xuanfeng/etl/bin
9、执行采集命令
./oracle2file -c 005_表名 -f 005 -n 001 -o -t 20170720000000
用法: oracle2file [-options] name [args...]
-c string
调度执行配置编号
-f string
调度流程编号
-n string
调度流程节点编号
-o 启用详细输出<选项>
默认:false
-t string
调度执行时间
格式:[YYYYMMDDHH24MISS]
10、生成csv文件存放路径
/data/gatherfiles/datafiles/
11、文件读取保留值路径
/data/elk/sincedb/
12、使用logstash命令将数据存储在es中
logstash -f 005_表名.conf
13、在终端使用elasticsearch中的curl命令查询数据是否导入成功
curl -XGET 'localhost:9200/_cat/indices?v&pretty' #查看gather-005索引是否创建成功
#查询student表中name字段中,值为Lihua的是否存在
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"query":{
"match":{
"NAME":"Lihua"
}
}
}'
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"query":{
"term":{
"NAME.keyword":"Lihua"
}
}
}'
查询name为Lihua的前十个
curl -XGET 'localhost:9200/_search?pretty' -H 'Content-Type:application/json' -d'
{
"size":10,
"query":{
"term":{
"NAME.keyword":"Lihua"
}
}
}'
相关文章推荐
- SQL高级语句-BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
- Oracle中SQL语句连接字符串的符号使用介绍
- 使用SSH添加数据时执行了SQL语句数据库却什么都没有?
- 在Oracle使用sql语句中如何插入日期格式的数据
- 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名
- Oracle的小笔记,模糊处理人名,电话,地址之类字段数据时可以使用的SQL语句
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- Oracle 获取没有使用绑定变量的SQL语句
- [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句
- 在SQL Server中sqlserver,access,excel之间数据如何使用sql语句直接操作
- Oracle中SQL语句连接字符串的符号使用介绍
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询
- 在Oracle使用sql语句中如何插入日期格式的数据
- 怎么使用robomongo查询mongodb(就像用plsql,输入sql语句,查询oracle数据一样)?
- Oracle使用sql语句分页显示数据,C#版
- [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句
- oracle表中存在数据就修改,没有数据自动添加 的sql语句
- Oracle sql"NOT IN"语句优化,查询A表有、B表没有的数据
- 使用SQL语句查询经纬度之间的距离和一定范围内的数据
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入