应同事要求,今天晚上将Excel的数据导入到MS SQL Server数据库中。
想想也挺容易的,前面我也导入过两次1000多条记录,应该很快。
结果栽在日期型的数据上了,他录入的日期有问题,有8个日期型字段,表面上看不出问题。
真是折腾人啊!
因为前面我要求日期型为字符串格式,我们其他人都是这么整理的表格,所以没有错误发生。
导入他的数据,总是报错,PHP也没有具体的错误信息。
加入错误信息提示:
在数据连接成功后加入:
$pspConn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
在需要插入数据的地方加入错误检测:
$sql = "insert into AssetsInfo(C02,C03,C04,C05,C06,C07,C08,C09,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28) values('$C02','$C03','$C04','$C05','$C06',$C07,$C08,'$C09','$C10','$C11','$C12','$C13','$C14','$C15','$C16','$C17','$C18',$C19,'$C20','$C21','$C22','$C23','$C24','$C25','$C26','$C27',$C28)";
$result = $pspConn->exec($sql);
try {
if ( $result>0 ) {
echo 'OK'.'<br>';
}else{
echo '行号:'.$i.' '.'资产编号:'.$C02.' 插入记录失败!'.'<br>';
}
}catch (PDOException $e){
echo '错误信息:'.$e.getMessage();
}
结果显示字符串转日期型失败,可是这里有8个日期型的,怎么知道是哪一个呢?
只好逐个打印出来提取的每个日期型数据,发现购置日期和投产日期是数字,错误找到了。
在Excel中将数据拷贝,在旁边插入字符型的列,去除格式黏贴,再运行程序。
成功了。