请教 网站建设价格一般多少钱,做方案收集图片的网站,wordpress选定文字标红,做ftp网站怎么设置本文章分享一篇关于DBM数据导入到mysql数据库方法#xff0c;有需要的同学可以参考一下本实例。首先说明一下#xff0c;我以前使用PERL#xff0c;保存文件 用DBM#xff0c;有5万多条记录#xff0c;每条记录有15个字段。现在想用MYSQL#xff0c;要吧记录导过来。第一…本文章分享一篇关于DBM数据导入到mysql数据库方法有需要的同学可以参考一下本实例。首先说明一下我以前使用PERL保存文件 用DBM有5万多条记录每条记录有15个字段。现在想用MYSQL要吧记录导过来。第一步将所有的DBM记录导入到了一个文本文件每个字段之间用TAB分开(就是t),每条记录换行结束。第二部将数据读入数组并且打开数据库和定义预处理如下代码如下复制代码$dblinefile(g:/allrecord.txt); //将数据库记录读入到数组$collenarray(8,50,80,20,20,30,3,20,1,1,20,35,35,35,2); #表里面每个字段的长度数值$dbnew i(localhost,me,mypass,allrecdb);if(mysqli_connect_errno()) {echo Can not connect db!;exit;}$q-query(SET names gb2312);$qINSERT INTO customers VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);$s$db-prepare($q); #预定义插入记录//数据库有15个字段为了方便导入已经设定全部类型为CHAR长度从1到100不等,具体等同$collen的数值;并且没有任何字段设置UNIQUE或者PRIMARY KEY在命令行用INSERT命令插入记录成功//代码如下复制代码foreach($dbline as $line) {$rec(t,trim($line));//这里反复测试过$rec数组有15个值并且我都把它strval了// for($j0;$j$rec[$j]substr($rec[$j],0,$collen[$j]);}for($i0;$i$rec[$i]strval($rec[$i]);}$s-bind_param(sssssssssssssss,$rec[0],$rec[1],$rec[2],$rec[3],$rec[4],$rec[5],$rec[6],$rec[7],$rec[8],$rec[9],$rec[10],$rec[11],$rec[12],$rec[13],$rec[14]);$s-execute();}$s-close();$db-close();?经过几个小时的调试发现任何字串超过字段长度就不能添加所以做了如下处理。1) 先把每个记录的每个字段的长度进行了处理代码如下代码如下复制代码for($j0;$j$rec[$j]substr($rec[$j],0,$collen[$j]);}2)再处理插入代码如下复制代码$s-bind_param(sssssssssssssss,$rec[0],$rec[1],$rec[2],$rec[3],$rec[4],$rec[5],$rec[6],$rec[7],$rec[8],$rec[9],$rec[10],$rec[11],$rec[12],$rec[13],$rec[14]);$s-execute();这样就可以插入记录了。目前剩下的问题是任何带有汉字的记录都不能插入(在命令行可以)。查了资料在命令行alter database crm character set gb2312,在脚本查询前加入$db-query(SET names gb2312)都没用。也没找到my.ini去改default-character-setgb2312难道php5.5暂时不支持中文MYSQL太多稀奇古怪的提示解决不了问题所有装上了SQLITE在命令行导入文本记录发现了问题1)某些字段中存在换行符但是在任何文本编译器中不换行或者不显示。这样会在导入的时候1行变成2行列参数自然不对了。解决方案 用str_replace($line,char(13));把每行内的换行符替换掉然后把所有记录存入tmp.txt2)再进行命令行的导入代码如下复制代码sqlite3.import tmp.txt customerssqlite3 count(*) from cusomers;57491显示导入成功。可见批量导入的时候一定要处理好那些隐藏的特殊字符。由于时间关系没有测试MYSQL的情况。晚上有空再确认一下同样方案是否可行。本文原创发布php中文网转载请注明出处感谢您的尊重