使用Shell进行Mysql间数据以文本形式传输及注意事项
来源:互联网 发布:防火墙udp端口4950 编辑:程序博客网 时间:2024/05/19 01:14
1、程序目录结构
2、进行Mysql数据卸装Shell程序
3、说明及注意事项
3.1、关于中文乱码问题
导出时出现乱码,需要在命令行前添加【set character_set_results=utf8;】;导入时出现乱码,需要添加load data选项【character set utf8】放在into table与fileds中间。
3.2、Mysql分表的导出
导出Mysql分表,采用如例所示的到Mysql字典中查找的方法,循环逐个导出追加数据文件的方式。
3.3、源表字段格式的查找
源表字段列部分采用通过Sql进行拼脚本的方式,但要注意,需要手动去除所得结果的【,'|'】,但最后的括号不去除。
-- 取源表字段的SQL:
结果示例:
CONCAT(ifnull(\`id\`,''),'|',ifnull(\`uid\`,''),'|',ifnull(\`type\`,''),'|',ifnull(\`target_key\`,''),'|',ifnull(\`state\`,''),'|',ifnull(\`created_time\`,''),'|',ifnull(\`updated_time\`,''),'|')
3.4、表结构说明
例子中要求源、目标表结构相同;如若选取源的部分字段装载到目标表中,则可以在[3.3]的Sql中过滤对应的字段进行筛选。
[root@master timeline]# pwd/root/timeline[root@master timeline]# tree.├── data│ ├── jellyfish_user.user_profile.dat│ └── jellyfish_user.user_profile.list└── etl_script └── user_profile.sh2 directories, 3 files
2、进行Mysql数据卸装Shell程序
[root@master etl_script]# cat user_profile.sh
#!/bin/bashrm -rf /root/timeline/data/jellyfish_user.user_profile.dat/usr/bin/mysql -hsrc-ip -Psrc-port -usrc-user -psrc-passwd -N -e"select table_name from information_schema.tables where table_schema='jellyfish_user' and table_name like 'user_profile%';" > /root/timeline/data/jellyfish_user.user_profile.listi=1for tab in $(cat /root/timeline/data/jellyfish_user.user_profile.list)docol_num=$itab_name=$(awk -F "|" 'NR=='$col_num' {print $1}' /root/timeline/data/jellyfish_user.user_profile.list)echo $tab_name#user_profile data proc .../usr/bin/mysql -hsrc-ip -Psrc-port -usrc-user -psrc-passwd -N -e"set character_set_results=utf8;select CONCAT(ifnull(\`uid\`,''),'|',ifnull(\`nickname\`,''),'|',ifnull(\`avatar\`,''),'|',ifnull(\`signature\`,''),'|',ifnull(\`gender\`,''),'|',ifnull(\`type\`,''),'|',ifnull(\`source\`,''),'|',ifnull(\`phone_num_verified\`,''),'|',ifnull(\`id_card_verified\`,''),'|',ifnull(\`state\`,''),'|',ifnull(\`last_login_time\`,''),'|',ifnull(\`created_time\`,''),'|',ifnull(\`updated_time\`,'')) from jellyfish_user.$tab_name;" >> /root/timeline/data/jellyfish_user.user_profile.dat: $(( i++ ))done/usr/bin/mysql -htgt-ip -utgt-user -ptgt-passwd -e "set character_set_results=utf8;use timeline;truncate table user_profile;load data local infile '/root/timeline/data/jellyfish_user.user_profile.dat' into table user_profile character set utf8 fields terminated by '|' enclosed by '' lines terminated by '\n' ignore 0 lines;"
3、说明及注意事项
3.1、关于中文乱码问题
导出时出现乱码,需要在命令行前添加【set character_set_results=utf8;】;导入时出现乱码,需要添加load data选项【character set utf8】放在into table与fileds中间。
3.2、Mysql分表的导出
导出Mysql分表,采用如例所示的到Mysql字典中查找的方法,循环逐个导出追加数据文件的方式。
3.3、源表字段格式的查找
源表字段列部分采用通过Sql进行拼脚本的方式,但要注意,需要手动去除所得结果的【,'|'】,但最后的括号不去除。
-- 取源表字段的SQL:
select CONCAT('CONCAT(',GROUP_CONCAT(concat('ifnull(\\`',b.COLUMN_NAME,'\\`,\'\')',',\'|\'')),')')from information_schema.`TABLES` a left join information_schema.`COLUMNS` b on a.TABLE_NAME=b.TABLE_NAME and a.TABLE_SCHEMA=b.TABLE_SCHEMAwhere a.table_NAME='time_line';
结果示例:
CONCAT(ifnull(\`id\`,''),'|',ifnull(\`uid\`,''),'|',ifnull(\`type\`,''),'|',ifnull(\`target_key\`,''),'|',ifnull(\`state\`,''),'|',ifnull(\`created_time\`,''),'|',ifnull(\`updated_time\`,''),'|')
3.4、表结构说明
例子中要求源、目标表结构相同;如若选取源的部分字段装载到目标表中,则可以在[3.3]的Sql中过滤对应的字段进行筛选。
0 0
- 使用Shell进行Mysql间数据以文本形式传输及注意事项
- Emacs中使用Forms-mode以表格形式展示/编辑简单的文本数据
- 接收以流的形式传输过来的数据
- AFNetworking3.0 POST 以二进制的形式传输数据
- 导出到excel 数据以文本形式显示
- 采用vb以十六进制的形式读取文本文档数据
- 使用程序导出建表语句,及以Insert语句形式导出数据
- 使用程序导出建表语句,及以Insert语句形式导出数据
- 使用shell进行mysql数据统计并上传
- Hive汇总统计数据自动化传输到Mysql数据库-跑批参数文本配置及提取使用
- 使用Socket进行设备间点对点连接传输数据
- 使用Socket进行设备间点对点连接传输数据
- 使用 JSON 进行数据的异步传输
- 使用 JSON 进行数据的异步传输
- 使用UDP方式进行传输数据
- Shell进行MySQL表跨服务器传输小脚本
- ActionScript 3.0 中,以数据形式传输图片包的完整解决方案
- PostgreSQL中copy命令以二进制形式传输数据的二进制格式
- ROS进二阶学习笔记(3) - programmatic way to start/stop a roslaunch
- (OK) Android应用进程启动流程(Zygote进程与SystemServer进程)
- kafka 常用命令
- FFmpeg的H.264解码器源代码简单分析
- Unity日志工具——封装,跳转
- 使用Shell进行Mysql间数据以文本形式传输及注意事项
- 常见Oracle日期处理问题
- kernel 源码浏览网站
- 201503-2 试题名称:数字排序(100分)ccf认证
- 郝斌的C语言基础 134 确定一个一维数组需要几个参数
- Leetcode_Reverse Integer[easy]
- css盒子模型学习笔记
- FFmpeg的H.264解码器源代码简单分析:解析器(Parser)部分
- 一个BaseActivity的诞生