mysql将csv格式的文件导入

#!/bin/bash
source ~/.bashrc
db='bfb_db_finance'
#tables=('t_rate_configure')
tables=('t_rate_configure' 't_cnt_for_cal_fee' 't_bank_rate_modify_log' 't_reserve_bank_account' 't_reserve_bank_account_channel' 't_reserve_bank_account_channel_
details' 't_reserve_bank_account_channel_files' 't_reserve_bank_account_channel_log' 't_outercheck_summary' 't_holiday_dates')
export_dir=~/tmp/script/data
echo 'start to export from fndb online...'
fndb_mine -e "create database if not exists bfb_db_finance;"
for tab in ${tables[@]}; do
 fndb_online -N -e "select * from ${db}.${tab}" > $export_dir"/"$tab &
 create_sql=`fndb_online -N -e "show create table ${db}.${tab}"`
 len=${#tab}
 create_sql=${create_sql:$len}
 echo -e "$create_sql" > $export_dir"/create_"$tab &
done;
wait
echo 'finished to export from fndb online.'
echo 'start to import to fndb offline...'
for tab in ${tables[@]}; do
 fndb_mine -e "drop table if exists ${db} . ${tab}"
 create_sql=`cat ${export_dir}/create_${tab}`
 fndb_mine -e "use ${db}; $create_sql"
 fndb_mine -N -e "truncate ${db} . ${tab}; LOAD DATA LOCAL INFILE '$export_dir/$tab' INTO TABLE ${db} . ${tab}"
 wait
 echo ${tab}" done."
 rm $export_dir"/"$tab &
 rm $export_dir/"create_"$tab &
done;
echo 'done.'
发表在 mysql | 留下评论

mysqli中的MYSQLI_USE_RESULT和MYSQLI_STORE_RESULT(转载)

 Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

If you use MYSQLI_USE_RESULT all subsequent calls will return error Commands out of sync unless you call mysqli_free_result().

 

下面又有人注释了这样一句:

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */

if ($result = mysqli_query($link, “SELECT * FROM City”, MYSQLI_USE_RESULT)) {

 

/* Note, that we can’t execute any functions which interact with the

server until result set was closed. All calls will return an

‘out of sync’ error */

if (!mysqli_query($link, “SET @a:=’this will not work’”)) {

printf(“Error: %s\n”, mysqli_error($link));

}

mysqli_free_result($result);

}

 

MYSQLI_USE_RESULT和MYSQLI_STORE_RESULT决定了mysqli client和server之间取结果集的方式。前者查询的时候并没有从server将结果集取回,后者查询时提取结果集返回给client,并分配内 存,存储到用户程序空间中,之后mysqli_fetch_array()相当于是从本地取数据;而MYSQLI_USE_RESULT方式 下,mysqli_fetch_array()每次都要向server请求结果行。

难怪phpmanual上那人注释说当检索大量数据时建议使用MYSQLI_USE_RESULT,因为MYSQLI_USE_RESULT有较低 的内存需求,而MYSQLI_STORE_RESULT需要在client本地维护结果集,内存开销大。说到这里,可能会 想,MYSQLI_USE_RESULT每次取数据时都要请求server,网络开销是不是要比MYSQLI_STORE_RESULT大呢?它节省的内 存开销与带来的网络开销占比究竟如何,还需具体的测试数据来分析。

参考资料 http://www.cnblogs.com/wangyonghui/archive/2013/04/24/3040824.html

发表在 mysql, php | 留下评论

mysql字符串处理

记录个在工作中遇到的问题:

mysql> select substring_index(substring_index(‘batch_uname,0501201506240001′,’batch_uname,’,-1),’,',1);
+——————————————————————————————+
| substring_index(substring_index(‘batch_uname,0501201506240001′,’batch_uname,’,-1),’,',1) |
+——————————————————————————————+
| 0501201506240001                                                                         |
+——————————————————————————————+
1 row in set (0.01 sec)

mysql> select substring_index(‘batch_uname,0501201506240001′, ‘batch_uname,’, -1);
+———————————————————————+
| substring_index(‘batch_uname,0501201506240001′, ‘batch_uname,’, -1) |
+———————————————————————+
| 0501201506240001                                                    |
+———————————————————————+
1 row in set (0.00 sec)

参考的文章:http://justdo2008.iteye.com/blog/1141609

发表在 mysql | 留下评论

php中浮点数的问题

http://php.net/manual/zh/language.types.float.php

发表在 php | 标签为 | 留下评论

require/include_once的效率问题

http://www.laruence.com/2012/09/12/2765.html

发表在 php | 标签为 , , , | 留下评论

jquery 动态添加删除二级联动

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
<script src="http://www.w3school.com.cn/jquery/jquery.js"></script>
<script type="text/javascript">
var configs = {
    parent_iframe : '.window_url',
    remark_count : 100,
    makesure_url : '/_u/finance/accountscheck/collateinfo',
    options_type : {
        SelStrSet: [
        { name: '请选择', value: '0', subname: '请选择', subvalue: '0'},
        { name: '线下收付款', value: '01', subname: '线下收款(手工充值)|线下付款(手工提现)|隔日退票|隔日退票转线下付款', subvalue: '01|02|03|04' },
        { name: '测试', value: '02', subname: '测试收款、测试退款、测试打款|测试退票', subvalue: '05|06' },
        { name: '银行错账', value: '03', subname: '银行错账(网银金额大于清算文件金额,资金有误)|银行错账(网银金额小于清算文件金额,资金有误)|银行错账(网银金额大于清算文件金额,清算文件错)|消去前期银行错账(网银金额小于清算文件金额,资金有误)|消去前期银行错账(网银金额大于清算文件金额,资金有误)|银行错账(网银金额小于清算文件金额,清算文件错)', subvalue: '07|08|09|10|11|12' },
        { name: '时间差', value: '04', subname: '银行到账与我方对账时间差|退款资金实时退我方T+1对账|线上付款,银行与我方记账时间差', subvalue: '13|14|15' },
        { name: '汇总文件付款', value: '05', subname: '汇总文件付款方式完成的退款|汇总文件付款,今日未把结果文件回导系统|汇总文件付款,补前期的回导', subvalue: '16|17|18' },
        { name: '退款退回', value: '06', subname: '退款退回(置失败)|退款退回(系统已置成功,需要转线下打款)|退款退回转线下打款', subvalue: '19|20|21' },
        { name: '误收款', value: '07', subname: '误收款|误收款退回', subvalue: '22|23' },
        { name: '当日撤销', value: '08', subname: '当日撤销', subvalue: '24' },
        { name: '其它', value: '09', subname: '其它', subvalue: '25' }]
    }
};
// option 操作
function initOptions(now,next,reset){
    if (reset === undefined) {
        reset = false;
    }    
    now.children("option").remove();
    jQuery.each(configs.options_type.SelStrSet, function () {
        var options_tmp = this;
        if(reset){
            now.append("<option value=" + options_tmp.value + ">" + options_tmp.name + "</option>");
        }else{
            if( now.attr('require') == options_tmp.value ){
                now.append("<option value=" + options_tmp.value + " selected >" + options_tmp.name + "</option>");
            }else{
                now.append("<option value=" + options_tmp.value + ">" + options_tmp.name + "</option>");
            }
        }
    });
    selchage(now,next);
}
function selchage(now,next,reset) {
    if (reset === undefined) {
        reset = false;
    }    
    now.children("option").each(function (i, o) {
        if (jQuery(this).attr("selected")) {
            next.children("option").remove();
            var temp = configs.options_type.SelStrSet[i].subname.split("|");
            var temp2 = configs.options_type.SelStrSet[i].subvalue.split("|");
            for (k = 0; k < temp.length; k++) {
                if(reset){
                    next.append("<option value=" + temp2[k] + ">" + temp[k] + "</option>");
                }else{
                    if( next.attr('require') == temp2[k] ){
                        next.append("<option value=" + temp2[k] + " selected >" + temp[k] + "</option>");
                    }else{
                        next.append("<option value=" + temp2[k] + ">" + temp[k] + "</option>");
                    }                    
                }
            };
        };
    });
}
// prepare the form when the DOM is ready
jQuery(document).ready(function() {
    jQuery('select[name="diff_reasons_max[]"]').each(function(index,element){    
        initOptions(jQuery(this),jQuery(this).parent().parent().find('SELECT[name="diff_reasons_min[]"]'));    
    });
    jQuery('select[name="diff_reasons_max[]"]').live("change",function(){
        selchage(jQuery(this),jQuery(this).parent().parent().find('SELECT[name="diff_reasons_min[]"]'));
    });
    //删除操作
    jQuery(".delDiffType").live("click",function(){
        jQuery(this).parent().parent().remove();
    });
    //新增差异
    jQuery(".addDiff").click(function(e){
        var html = jQuery(".diffType")
                            .clone(false)
                            .removeClass('diffType')
                            .find('td:last')
                            .html('<button type="button" >删除</button>')                        
                            .end()
                            .find('.num-pallets-input')
                            .val('')
                            .end();
            var obj_max = html.find('SELECT[name="diff_reasons_max[]"]');                
            var obj_min = html.find('SELECT[name="diff_reasons_min[]"]');
            jQuery('SELECT[name="diff_reasons_max[]"]').last().parent("TD").parent("TR").after(html);
            initOptions(obj_max,obj_min,true);
    });    
});
</script>
</head>

<body>

<table>
                <tr>
                    <td>差异类型:</td>
                    <td><select name="diff_reasons_max[]" require="02" ></select></td>
                    <td><select name="diff_reasons_min[]" ></select></td>
                    <td>异常金额:</td>
                    <td><input type="text" name="diff_reasons_amount[]" /></td>
                    <td width="20%"></td>
                </tr>                

                <tr><td colspan="6" align="left"><button type="button">新增</button></td></tr>                
</table>
</body>
</html>

发表在 jquery | 留下评论

jquery获取窗口高度

//alert(jQuery(window).height()); //浏览器时下窗口可视区域高度
//alert(jQuery(document).height()); //浏览器时下窗口文档的高度
//alert(jQuery(document.body).height());//浏览器时下窗口文档body的高度
//alert(jQuery(document.body).outerHeight(true));//浏览器时下窗口文档body的总高度 包括border padding margin
//alert(jQuery(window).width()); //浏览器时下窗口可视区域宽度
//alert(jQuery(document).width());//浏览器时下窗口文档对于象宽度
//alert(jQuery(document.body).width());//浏览器时下窗口文档body的高度
//alert(jQuery(document.body).outerWidth(true));//浏览器时下窗口文档body的总宽度 包括border padding margin
//alert(jQuery(document).scrollTop()); //获取滚动条到顶部的垂直高度
//alert(jQuery(document).scrollLeft()); //获取滚动条到左边的垂直宽度

发表在 jquery | 留下评论

awk用法

http://www.gnu.org/software/gawk/manual/gawk.html

发表在 awk | 留下评论

RBAC权限管理(转载)

http://www.cnblogs.com/xingmeng/category/576720.html

发表在 涨姿势 | 留下评论

国外程序员整理的 PHP 资源大全

ziadoz 在 Github 发起维护的一个 PHP 资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。


依赖管理

依赖和包管理库

 

其他的依赖管理

其他的相关依赖管理

 

框架

Web开发框架

其他框架

其他Web开发框架

框架组件

来自web开发框架的独立组件

微型框架

微型框架和路由

  • Silex - 基于Symfony2组件的微型框架
  • Slim - 另一个简单的微型框架
  • Bullet PHP -用于构建REST APIs的微型框架
  • Fast Route - 快速路由库
  • Pux -另一个快速路由库

 

其他微型框架

其他相关的微型框架和路由

模板

模板化和词法分析的库和工具

  • Twig -一个全面的模板语言
  • Twig Cache Extension -一个用于Twig的模板片段缓存库
  • Mustache -一个Mustache模板语言的PHP实现
  • Phly Mustache -另一个Mustache模板语言的PHP实现
  • MtHaml - 一个HAML 模板语言的PHP实现
  • PHPTAL -一个 TAL 模板语言的PHP实现
  • Plates -一个原生PHP模板库
  • Lex -一个轻量级模板解析器

静态站点生成器

预处理工具来生成web页面的内容。

  • Sculpin -转换Markdown和Twig为静态HTML的工具
  • Phrozn - 另一个转换Textile,Markdown和Twig为HTML的工具

HTTP

用于HTTP和网站爬取的库

  • Guzzle -一个全面的HTTP客户端
  • Buzz -另一个HTTP客户端
  • Requests -一个简单的HTTP库
  • HTTPFul -一个链式HTTP库
  • Goutte -一个简单的web爬取器
  • PHP VCR -录制和重放HTTP请求的库

 

URL

解析URL的库

 

Email

发送和解析邮件的库

文件

文件处理和MIME类型检测库

 

Streams 流

处理流的库

  • Streamer - 一个面向对象的流包装库

 

Dependency Injection依赖注入

实现依赖注入设计模式的库

  • Pimple - 一个小的依赖注入容器
  • Auryn - 另一个依赖注入容器
  • Orno Di -另一个可伸缩的依赖注入容器
  • PHP DI -一个使用注释实现的依赖注入
  • Acclimate -一个依赖注入容器和服务定位的通用接口

 

Imagery 图像

处理图像的库

 

Testing 测试

测试代码和生成测试数据的库

  • PHPUnit -一个单元测试框架
  • DBUnit -PHPUnit的数据库测试库
  • ParaTest - PHPUnit的并行测试库
  • PHPSpec -基于功能点设计的单元测试库
  • Codeception -一个全栈测试框架
  • AspectMock -  PHPUnit/ Codeception 模拟框架。
  • Atoum -一个简单的测试库
  • Mockery -一个用测试的模拟对象库
  • Phake -另一个用测试的模拟对象库
  • Prophecy -一个可选度很高的模拟框架
  • Faker -一个伪数据生成库
  • Samsui - 另一个伪数据生成库
  • Alice -富有表现力的一代库
  • Behat -一个行为驱动开发(BDD)测试框架
  • Pho -一个行为驱动开发测试框架
  • Mink -Web验收测试
  • HTTP Mock - 一个在单元测试模拟HTTP请求的库
  • VFS Stream -一个用于测试的虚拟文件系统流的包装器
  • VFS -另一个用于测试虚拟文件系统
  • Locust -一个用Python编写的现代加载测试库

 

Continuous Integration 持续集成

持续集成的库和应用

  • Travis CI - 一个持续集成平台
  • PHPCI -一个PHP的开源持续集成平台
  • Sismo - 一个持续测试服务库
  • Jenkins一个 PHP 支持的持续集成平台
  • JoliCi - 一个用PHP编写的由Docker支持的持续集成客户端

 

Documentation 文档

生成项目文档的库

  • Sami -一个API文档生成器
  • APIGen -另一个API文档生成器
  • PHP Documentor 2 -一个API文档生成器
  • phpDox - 一个PHP项目的文档生成器(不限于API文档)

 

Security 安全

生成安全的随机数,加密数据,扫描漏洞的库

 

Passwords 密码

处理和存储密码的库和工具

 

Code Analysis 代码分析

分析,解析和处理代码库的库的工具

Debugging 调试

调试代码的库和工具

 

Build Tools 构建工具

项目构建和自动化工具

  • Go -一个简单的PHP构建工具
  • Bob - 一个简单的项目自动化工具
  • Phake -一个PHP克隆库
  • Box - 一个构建PHAR文件的工具
  • Phing -一个灵感来自于Apache Ant的PHP项目构建系统

 

Task Runners 任务运行器

自动运行任务的库

  • Task -一个灵感来源于Grunt和Gulp的纯PHP任务运行器
  • Robo -一个面向对象配置的PHP任务运行器
  • Bldr -一个构建在Symfony组件上的PHP任务运行器

 

Navigation导航

构建导航结构的工具

 

Asset Management 资源管理

管理,压缩和最小化web站点资源的工具

  • Assetic - 一个资源管理的管道库
  • Pipe -另一个资源管理的管道库
  • Munee -一个资源优化库
  • JShrink -一个JavaScript最小化库
  • Puli - 一个检测资源绝对路径的库

 

Geolocation 地理位置

为地理编码地址和使用纬度经度的库。

  • GeoCoder -一个地理编码库
  • GeoTools -一个地理工具相关的库
  • PHPGeo -一个简单的地理库
  • GeoJSON -一个地理JSON的实现

 

Date and Time 日期和时间

处理日期和时间的库

 

Event 事件

时间驱动或非阻塞事件循环实现的库

 

Logging 日志

生成和处理日志文件的库

  • Monolog - 一个全面的日志工具
  • KLogger -一个易用的PSR-3兼容的日志类

 

E-commerce 电子商务

处理支付和构建在线电子商务商店的库和应用

  • OmniPay -一个框架混合了多网关支付处理的库
  • Payum - 一个支付抽象库
  • Sylius - 一个开源的电子商务解决方案
  • Thelia -另一个开源的电子商务解决方案
  • Money - 一个Fowler金钱模式的PHP实现
  • Sebastian Money -另一个处理货币值的库
  • Swap -一个汇率库

 

PDF

处理PDF文件的库和软件

  • Snappy -一个PDF和图像生成器库
  • WKHTMLToPDF -一个将HTML转换为PDF的工具

 

Database 数据库

使用对象关系映射(ORM)或数据映射技术的数据库交互库

  • Doctrine -一个全面的DBAL和ORM
  • Doctrine Extensions -一个Doctrine行为扩展的集合
  • Propel - 一个快速的ORM,迁移库和查询构架器
  • Eloquent -Laravel 4 ORM
  • Baum -一个Eloquent的嵌套集实现
  • Spot2 -一个MySQL的ORM映射器
  • RedBean -一个轻量级,低配置的ORM
  • Pomm -一个PostgreSQL对象模型管理器
  • ProxyManager -一个为数据映射生成代理对象的工具集

 

Migrations 迁移

帮助管理数据库模式和迁移的库

 

NoSQL

处理NoSQL后端的库

  • MongoQB -一个MongoDB查询构建库
  • Monga -一个MongoDB抽象库
  • Predis - 一个功能完整的Redis库

 

Queue 队列

处理事件和任务队列的库

 

Search 搜索

在数据上索引和执行查询的库和软件

 

Command Line 命令行

构建命令行工具的库

  • Boris - 一个微型PHP REPL
  • PsySH - 另一个微型PHP REPL
  • Pecan -一个事件驱动和非阻塞内核
  • GetOpt - 一个命令行选择解析器
  • OptParse -另一个命令行选择解析器
  • Commando -另一个简单的命令行选择解析器
  • GetOptionKit -另一个命令行选择解析器
  • Cron Expression -计算cron运行日期的库
  • ShellWrap -一个简单的命令行包装库
  • Hoa Console -另一个命令行库
  • Shunt - 一个在多台远程机器上并行运行命令行的库
  • Cilex -一个构建命令行工具的微型框架

 

Authentication 身份验证

实现身份验证的库

  • Sentry -一个混合的身份验证和授权的框架库
  • Sentry Social -一个社交网络身份验证库
  • Opauth -一个多渠道的身份验证框架
  • OAuth2 -一个OAuth2身份验证服务,资源服务器和客户端库
  • OAuth2 Server -另一个OAuth2服务器实现
  • PHP oAuthLib -另一个OAuth库
  • TwitterOAuth -一个Twitter OAuth库
  • TwitterSDK -一个完全测试的Twitter SDK
  • Hawk -一个Hawk HTTP身份认证库
  • HybridAuth -一个开源的社交登陆库

 

Markup 标记

处理标记的库

 

Strings 字符串

解析和处理字符串的库

 

Numbers 数字

处理数字的库

 

Filtering and Validation 过滤和验证

过滤和验证数据的库

  • Filterus - 一个简单的PHP过滤库
  • Respect Validate -一个简单的验证库
  • Valitron -另一个验证库
  • Upload - 一个处理文件上传和验证的库
  • DMS Filter - 一个注释过滤库
  • MetaYaml -一个支持YAML,JSON和XML的模式验证库
  • ISO-codes -验证各种ISO和ZIP编码的库(IBAN, SWIFT/BIC, BBAN, VAT, SSN, UKNIN)

 

 REST和API

开发REST-ful API的库和web工具

  • Apigility -一个使用Zend Framework 2构建的API构建器
  • Hateoas -一个HOATEOAS REST web服务库
  • HAL -一个超文本应用语言(HAL)构建库
  • Negotiation -一个内容协商库
  • Drest -一个将Doctrine实体暴露为REST资源节点的库
  • Restler -一个将PHP方法暴露为RESTful web API的轻量级框架

 

Caching 缓存

缓存数据的库

 

数据结构和存储

实现数据结构和存储技术的库

  • Ardent -一个数据结构库
  • PHP Collections - 一个简单的集合库
  • Serializer -一个序列化和反序列化数据的库
  • PHP Object Storage -一个对象存储库
  • Fractal -一个转换复杂数据结构到JSON输出的库
  • Totem -一个管理和穿件数据交换集的库
  • PINQ -一个PHP实时Linq库
  • JsonMapper -一个将内嵌JSON结构映射为PHP类的库

 

Notifications 通知

处理通知软件的库

 

Deployment 部署

项目部署库

  • Pomander -一个PHP应用部署工具
  • Rocketeer -PHP世界里的一个快速简单的部署器
  • Envoy -一个用PHP运行SSH任务的工具
  • Plum - 一个部署库

 

国际化和本地化

国际化(I18n)和本地化(L10n)

 

第三方API

访问第三方API的库

 

Extensions 扩展

帮组构建PHP扩展的库

  • Zephir -用于开发PHP扩展,且介于PHP和C++之间的编译语言
  • PHP CPP -一个开发PHP扩展的C++库

 

Miscellaneous 杂项

不在上面分类中的有用库和工具

 

Software 软件

创建一个开发环境的软件

PHP安装

在你的电脑上帮助安装和管理PHP的工具

  • HomeBrew -一个OSX包管理器
  • HomeBrew PHP -一个HomeBrew的PHP通道
  • PHP OSX - 一个OSX下的PHP安装器
  • PHP Brew -一个PHP版本管理和安装器
  • PHP Env - 另一个PHP版本管理器
  • PHP Switch - 另一个PHP版本管理器
  • PHP Build - 另一个PHP版本安装器
  • VirtPHP - 一个创建和管理独立PHP环境的工具

 

Development Environment 开发环境

创建沙盒开发环境的软件和工具

  • Vagrant -一个便携的开发环境工具
  • Ansible - 一个非常简单的编制框架
  • Puppet -一个服务器自动化框架和应用
  • PuPHPet -一个构建PHP开发虚拟机的web工具
  • Protobox -另一个构建PHP开发虚拟机的web工具
  • Phansible - 一个用Ansible构建PHP开发虚拟机的web工具

 

Virtual Machines 虚拟机

相关的PHP虚拟机

  • HipHop PHP -Facebook出品的PHP虚拟机,运行时和JIT
  • HippyVM -另一个PHP虚拟机
  • Hack - 一个PHP进行无缝操作的 HHVM编程语言

IDE 集成开发环境

支持PHP的集成开发环境

 

Web Applications Web应用

基于Web的应用和工具

  • 3V4L一个在线的PHP shell
  • DBV -一个数据库版本控制应用
  • PHP Queue -一个管理后端队列的应用
  • Composer as a Service - 作为一个zip文件下载Composer包的工具
  • MailCatcher - 一个抓取和查看邮件的web工具

 

Resources 资源

各种提高你的PHP开发技能和知识的资源,比如书籍,网站,文章

PHP网站

PHP相关的有用网站

 

Other Websites 其他网站

web开发相关的有用网站

 

PHP 书籍

PHP相关的非常好的书籍

 

其他书籍

与一般计算和web开发相关的书

 

PHP视频

PHP相关的非常不错的视频

 

PHP阅读

PHP相关的阅读资料

 

PHP Internals Reading PHP内核阅读

阅读PHP内核或性能相关的资料

发表在 涨姿势 | 留下评论