热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DBM数据导入到mysql数据库方法

本文章分享一篇关于DBM数据导入到mysql数据库方法,有需要的同学可以参考一下本实例。

本文章分享一篇关于DBM数据导入到mysql数据库方法,有需要的同学可以参考一下本实例。

首先说明一下,我以前使用PERL,保存文件 用DBM,有5万多条记录,每条记录有15个字段。现在想用MYSQL,要吧记录导过来。
第一步,将所有的DBM记录导入到了一个文本文件,每个字段之间用TAB分开(就是"t"),每条记录换行结束。
第二部,将数据读入数组,并且打开数据库和定义预处理如下:

代码如下

$dbline=file("g:/allrecord.txt"); //将数据库记录读入到数组
$collen=array(8,50,80,20,20,30,3,20,1,1,20,35,35,35,2); #表里面每个字段的长度数值

$db=new i('localhost','me','mypass','allrecdb');
if(mysqli_connect_errno()) {
echo "Can not connect db!";
exit;
}
$q->query("SET names 'gb2312'");

$q="INSERT 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($j=0;$j $rec[$j]=substr($rec[$j],0,$collen[$j]);
}
for($i=0;$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($j=0;$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-set=gb2312
难道php5.5暂时不支持中文?

MYSQL太多稀奇古怪的提示,解决不了问题,所有装上了SQLITE,在命令行导入文本记录,发现了问题:

1)某些字段中存在换行符,但是在任何文本编译器中不换行或者不显示。这样会在导入的时候,1行变成2行,列参数自然不对了。
解决方案: 用str_replace($line,char(13));把每行内的换行符替换掉,然后把所有记录存入tmp.txt

2)再进行命令行的导入

代码如下
sqlite3>.import tmp.txt customers
sqlite3> count(*) from cusomers;

57491

显示导入成功。

可见,批量导入的时候,一定要处理好那些隐藏的特殊字符。
由于时间关系,没有测试MYSQL的情况。晚上有空再确认一下同样方案是否可行。

推荐阅读
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
author-avatar
mobiledu2502915347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有