MySQL有一个很好的CSV导入功能LOAD DATA INFILE
.
我有一个大型数据集,需要定期从CSV导入,所以这个功能正是我需要的.我有一个可以完美导入数据的工作脚本.
.....除了......我事先并不知道终端终结器是什么.
我的SQL代码目前看起来像这样:
LOAD DATA INFILE '{fileName}'
INTO TABLE {importTable}
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
( {fieldList} );
Run Code Online (Sandbox Code Playgroud)
这适用于某些导入文件.
但是,导入数据来自多个来源.其中一些有\n
终结者; 其他人有\r\n
.我无法预测我将拥有哪一个.
有没有使用的方式LOAD DATA INFILE
来指定,我行可与任一被终止\n
或\r\n
?我该如何处理?
我正在使用PHP的mysqli库.数据库插入和更新始终位于try-catch块中.立即检查每个查询的成功(if $result === false
),任何失败都会引发异常.catch调用mysqli_rollback()
并退出并为用户发送消息.
我的问题是,我是否应该费心检查返回值mysqli_rollback()
?如果是这样,并且回滚失败,代码应采取什么操作?
我很难理解回滚如何失败(除非MySQL中存在一些残暴的错误).而且由于PHP无论如何都会退出,所以调用回滚几乎是多余的.我当然认为它应该在代码中以便清楚,但是当PHP退出时它会关闭与MySQL的连接,并且未提交的事务会自动回滚.
这里有很多问题,询问如何在PHP中对多维数组进行排序.答案是usort()
.我知道.但是我有一个问题需要更进一步,我在这里看不到类似的答案.
我有一系列记录,每个记录都包含一个国家ID(如果您愿意,可以是国家/地区名称;它不相关).
我的任务是以有利于某些国家的方式对阵列进行排序.这是动态的 - 即支持的国家的选择取决于用户的配置.我有一个单独的数组,它指定了前几个国家所需的排序顺序; 来自其他国家的结果只会在列表末尾未分类.
所以问题是:如何在usort()
不使用全局变量的情况下获得此排序标准.并且最好不要将条件数组注入到主数组的每个元素中('如果我还要循环它,那么,使用它的重点是什么usort()
?)
请注意:由于它与这里的答案相关,我暂时停留在PHP 5.2上,所以我不能使用匿名函数.我们正在升级,但是现在我需要能够解决5.2的问题.(5.3/5.4的答案也会受到欢迎,特别是如果它们使它变得更容易,但我将无法使用它们)
我用过这个
p.test {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;}
Run Code Online (Sandbox Code Playgroud)
但它不适用于Firefox.我没有检查其他浏览器.
但我需要跨浏览器兼容
我正在尝试使用Jenkins的Plot插件来生成我们的代码中有多少"TODO"标记的图表.
我有一个XML文件作为构建的一部分生成,其中包含有关它们的数据(以及其他内容):每个TODO标记在XML中都有一行,如下所示:
<tag line="3" name="todo" description="Do something with this"/>
Run Code Online (Sandbox Code Playgroud)
使用独立的xpath工具,我可以使用表达式//tag[@name='todo']
来获取所有匹配的元素,或者count(//tag[@name='todo'])
只获取它们的数量.
此计数是我想要绘制的值.但是我无法在Jenkins的图表上获得任何数据.
我创建了绘图并指定它是一个XML文件.Jenkins然后问我结果是Nodeset,Node,String,Boolean还是Number.
我假设"Nodeset"适用于//tag[@name='todo']
和"Number" count(//tag[@name='todo'])
.但是我已经尝试了它们两个,它们都给了我一个空图,没有绘制数据.
最令人沮丧的是Jenkins没有给我任何关于问题的反馈意见; 只是空图.构建日志中没有任何内容,或者我可以看到的任何其他内容.
任何人都可以帮我搞定这个吗?我在任何地方都找不到任何例子.它似乎应该很简单,但它不会发生在我身上.
提前致谢.
[编辑]
根据评论中的要求,提供更大的XML示例:
<?xml version="1.0" encoding="utf-8"?>
<project>
<method>
<docblock>
<tag line="763" name="todo" description="This needs doing"/>
</docblock>
</method>
<method>
<docblock>
<tag line="14" name="todo" description="This also needs doing"/>
</docblock>
</method>
</project>
Run Code Online (Sandbox Code Playgroud)
(我已经删除了不相关的元素和属性,但这是基本结构)
据我所知,那里没有任何XML命名空间.
我们有一个网站使用Google Maps API v3在地图上显示一堆标记.标记是可点击的,并打开标准的Google地图信息弹出窗口.
这适用于所有桌面浏览器.但由于某些原因,我无法在我测试的任何移动设备(各种Android和iOS设备)上使用它.标记根本不响应点击.
我把它缩小到我们的自定义标记.如果我删除使用加载我们的自定义标记图像的代码new google.maps.MarkerImage()
,那么它工作正常.
var marker = new google.maps.Marker(
var markerOptions = {
icon : new google.maps.MarkerImage(
mURL, new google.maps.Size(mWidth,mHeight),
new google.maps.Point(0,0),new google.maps.Point(anchorX,anchorY)
),
flat: true,
position: point,
visible: true,
title: title,
zIndex: zIndex,
map: map,
}
);
google.maps.event.addListener(marker,'click',function() { ...... });
Run Code Online (Sandbox Code Playgroud)
以上代码适用于所有桌面浏览器,但在所有移动浏览器中都失败.但是,如果我删除自定义图形(即'icon'属性),它可以正常工作.
有任何想法吗?我把头发拉出来!
我有这个脚本用于检查复选框,它在firefox和谷歌浏览器中运行良好,但它在IE 9中不起作用
$notifyBySmsCheckbox
.change(function(){
if (this.checked) {console.log('checked');
$('#f_notify_by_sms_instructions, #f_notify_by_sms_pin, #cellphoneInfo').show();
}
else {console.log('not checked');
$('#f_notify_by_sms_instructions, #f_notify_by_sms_pin, #cellphoneInfo').hide();
}
})
.change();
Run Code Online (Sandbox Code Playgroud)
谁知道为什么这是??