本文章分享一篇关于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的情况。晚上有空再确认一下同样方案是否可行。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql 导入dbm文件_DBM数据导入到mysql数据库方法相关推荐

  1. hbase导入csv文件_HBase 数据导入 ImportTsv

    ImportTsv 工具是通过map reduce 完成的.所以要启动yarn. 工具要使用jar包,所以注意配置classpath.ImportTsv默认是通过hbase api 插入数据的 [ha ...

  2. mysql 导入tsv文件_HBase数据迁移(2)- 使用bulk load 工具从TSV文件中导入数据

    英文原文摘自:<HBase Administration Cookbook>??编译:ImportNew?-?陈晨 本篇文章是对数据合并的系列文章之二(共三篇),针对的情景模式就是将现有的 ...

  3. mysql导入csv文件 第一行有问题_mysql 导入 csv文件中数据,只能导入第一行

    用workbench导入csv数据,只能导入数据的第一行,也就是标注每一列的列名的那一行. 但问题是,每次导入完成时,系统提示已经导入了500条记录(这个文件中的确有500条记录),可是刷新数据库后打 ...

  4. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...

    把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...

  5. mysql导入dat文件_.dat导入数据库

    SQL Server中bcp命令的用法以及数据批量导入导出 0.参考文献: SQL Server BCP使用小结 bcp Utility 某社区600万用户数据导入MYSQL.MSSQL.Oracle ...

  6. Linux下安装mysql以及配置用户与数据导入

    Linux下安装mysql以及配置用户与数据导入 yun安装mysql linux下有一个很神奇的东西叫yum,只要有源,用yum来安装是一件非常容易的事,什么都不用管,它会为你解决好一些软件依赖的问 ...

  7. load导入txt文件到mysql_mysql导入数据load data infile用法(将txt文件中的数据导入表中)...

    我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明 基本语法: load data  [low_priority] [local] infile ...

  8. 从压缩文件将数据导入SQL Server

    介绍 (Introduction) I have seen many organizations receive data from various sources and import into S ...

  9. mysql 导出dmp文件_PLSQL Developer导入导出表数据结构

    一.导出数据结构和表数据 导出表结构: 找到工具-->导出用户对象-->选择当前用户-->导出文件为xxx.sql位置自己选择(导出的只是数据结构) 导出表数据: 找到工具--> ...

最新文章

  1. 如何训练2457亿参数量的中文巨量模型“源1.0”
  2. C++ 字符串中小写字母转换成大写字母
  3. cocos2d CCNode类(节点属性大全)
  4. 51nod1347(简单逻辑)
  5. Activiti - 新一代的开源BPM引擎
  6. [转]android logo:内核、android开机动画
  7. Netty实现丢弃服务协议(Netty4.X学习一)
  8. 利用ECG关于HRV分析
  9. 416亿元公有云市场:阿里173亿、腾讯50亿、华为35亿
  10. 已知一个点的经纬度、方位角、距离,求另一点经纬度
  11. c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
  12. 7-7 用扑克牌计算24点 (25 分)
  13. 跨进程API Hook
  14. jQuery创建表格
  15. 精尽Spring Boot源码分析 - 内嵌Tomcat容器的实现
  16. 《Python》典型数据结构
  17. 神经网络训练失败原因总结
  18. 边界Fisher分析(MFA)及其非线性改进核边界Fisher分析(KMFA)的验证对比
  19. 网页对话框showModalDialog()
  20. python flask 在线可视化平台系统

热门文章

  1. mysql order by int_mysql order by是怎么工作的?
  2. 三星sd卡无法删除数据_单反相机里的SD卡在电脑中突然无法识别提示要格式化怎么办?...
  3. 表单必填标星_怎么用JS做form表单验证,要详细代码,求救!(带星号的是必填项)...
  4. linux 安装tcl命令,TCL/TK Linux下安装 | 勤奋的小青蛙
  5. 异或!!不占用额外空间!!
  6. java多文件post请求_如何使用Java发出多部分/表单数据POST请求?
  7. 腾讯云搭svn服务器,腾讯云使用笔记二: 安装svn服务器及web同步
  8. java飞鸽传书_feige 飞鸽传书源代码java 实现不错的联系网络编程的资料飞鸽传书的GUI(java实现) - 下载 - 搜珍网...
  9. linux redis客户端_为什么单线程Redis能那么快?
  10. 继续说invoke伪指令