PHP剧本的处置惩罚
1、剧本的思绪就是:查询特定账号数据,组装拼接成sql文本数据。这里要注重,对查询的值要举行过滤处置惩罚,由于有些字段是包括一些不法字符,比方:’(单引号),”(双引号),`(键盘左上角第二个),这些标记在拼接sql语句时,会由于找不到闭合的另一端,让值变了,致使sql语句拼接有题目,所以这部份字符要替换掉,我是用str_replace()函数将这些标记置为空。
2、我是运用is_numeri函数推断值是不是是数字范例构造,是的话就加""(双引号),然则is_numeri有个题目,碰到有些数值有e字母的,它也是返回true,
实锤了如许是有题目的,由于如许值没加""是不能insert到MySQL中的。
厥后我同时加上is_float(),is_string()函数同时来推断这个值是不是须要到场双引号。
3、由于导出的数据量比较多,我是分了4个PHP历程来跑,一个历程跑一万个用户数据,如许能够节约许多时候。然则要注重的是,存储的sql文本也是须要举行辨别的,由于多个历程同时写一个文本文件可能会涌现数据丧失(我是背面才发明,花了很多时候补归去数据)。
4、运用tar -xcvf 敕令对sql文件举行紧缩打包,一个7G的文件,能够紧缩到700多M,紧缩结果照样不错的。PHP视频教程
导入数据到MySQL
1、由于数据量比较大,我也是分了几个历程跑数据。运用的是MySQL source 敕令来导入这些大的sql文件
mysql>source D:/www/sql/data.sql;
sql文件内里包括了use 数据库,这里就不须要use 数据库了。
经由过程source敕令导入多个文件,能够新建一个sou.sql文件,内里寄存下面的敕令
比方:
source c:/1.sql; source c:/2.sql;
如许就能够在一个source敕令内里导入多个sql文件了。
时期也有一些题目:
涌现:
mysql Got a packet bigger than 'max_allowed_packet' bytes
查了下,是由于单表数据量较大,大致定位到mysql会对单表数据量较大的SQL做限定
处理:
变动max_allowed_packet包大小
计划一,暂时修正:输入敕令 set global max_allowed_packet = 大小; (注重,这里的大小只能填写字节。重启mysql效劳后,设置将会失效!)
计划二,修正my.ini文件,在[mysqld]部份到场 max_allowed_packet=大小
2、由于source敕令这类体式格局不能纪录定位纪录到毛病信息,所以厥后我改用了linux shell体式格局导入
以下:sql.sh
#!/bin/bash p="d:backup/sql.sql" //绝对路径 User='abc' Password='123' mysql -u $User -p$Password -e "source $f" 2>err1.txt;//输出毛病到文件中,轻易背面查询 echo 'OK!'
如许导入,能够找到一些毛病的提醒,轻易背面处理题目。 mysql视频教程
以上就是PHP+MySQL完成海量数据导入导出的总结的细致内容,更多请关注ki4网别的相干文章!