本文章分享一篇关于DBM数据导入到mysql数据库方法,有需要的同学可以参考一下本实例。
首先说明一下,我以前使用PERL,保存文件 用DBM,有5万多条记录,每条记录有15个字段。现在想用MYSQL,要吧记录导过来。
第一步,将所有的DBM记录导入到了一个文本文件,每个字段之间用TAB分开(就是"t"),每条记录换行结束。
第二部,将数据读入数组,并且打开数据库和定义预处理如下:
代码如下 | 复制代码 |
$db=new i('localhost','me','mypass','allrecdb'); $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 } for($i=0;$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 } |
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的情况。晚上有空再确认一下同样方案是否可行。

随着数据量的不断增加,数据库的性能成为了一个越来越重要的问题。数据冷热分离处理是一种有效的解决方案,它可以将热点数据和冷数据进行分离,从而提高系统的性能和效率。本文将介绍如何使用Go语言和MySQL数据库进行数据冷热分离处理。一、什么是数据冷热分离处理数据冷热分离处理是一种将热点数据和冷数据进行分类处理的方式。热点数据是指访问频率高、对性能要求高的数据,冷数

随着数据量的增加,数据库的备份变得越来越重要。而对于MySQL数据库,我们可以借助Go语言实现自动化的增量备份。本篇文章将简单介绍如何使用Go语言进行MySQL数据库的数据增量备份。一、安装Go语言环境首先,我们需要在本地安装Go语言环境。可以前往官网下载相应的安装包并进行安装。二、安装相应的库Go语言提供了许多访问MySQL数据库的第三方库,其中较为常用的

如何使用MySQL数据库进行时间序列分析?时间序列数据是指按照时间顺序排列的数据集合,它具有时间上的连续性和相关性。时间序列分析是一种重要的数据分析方法,可以用于预测未来趋势、发现周期性变化、检测异常值等。在本文中,我们将介绍如何使用MySQL数据库进行时间序列分析,并附上代码示例。创建数据表首先,我们需要创建一个数据表来存储时间序列数据。假设我们要分析的数

近年来,Go语言越来越受到开发人员的青睐,成为开发高性能Web应用程序的首选语言之一。MySQL也作为一种流行的数据库,使用广泛。在将这两个技术结合起来使用的过程中,缓存处理是非常重要的一环。下面将介绍如何使用Go语言来处理MySQL数据库的缓存。缓存的概念在Web应用程序中,缓存是为了加快数据的访问速度而创建的一种中间层。它主要用于存储经常被请求的数据,以

随着大量的数据需要存储和处理,MySQL已经成为了应用开发中最常用的关系型数据库之一。而Go语言由于其高效并发处理和简洁的语法,也越来越受到开发者的欢迎。本文就将带领读者通过Go语言实现可靠的MySQL数据库连接,让开发者能够更加高效地查询和存储数据。一、Go语言连接MySQL数据库的几种方式Go语言中连接MySQL数据库通常有3种方式,分别是:1.第三方库

随着业务的增长和数据库版本升级等因素,数据库迁移变得越来越普遍。在进行数据迁移时,选择合适的工具和语言非常重要。本文将介绍如何使用Go语言进行MySQL数据库的数据迁移。安装MySQL驱动在使用Go语言进行MySQL数据库迁移前,需要首先安装MySQL驱动。在Go语言中,有很多MySQL驱动可供选择。在本文中,我们将选择最常用的官方MySQL驱动包-"dat

MySQL创建标签表实现文章标签功能的实现步骤标签是一种常用的分类方式,它可以帮助我们更好地组织和检索文章。在许多网站和应用程序中,都会有文章标签的功能。本文将介绍如何使用MySQL创建标签表,并实现文章标签的功能。步骤1:创建标签表首先,我们需要创建一个用于存储标签的表。在MySQL中,可以使用以下命令创建标签表:CREATETABLEtags(

随着互联网和大数据时代的到来,数据处理成为了一项必备的技能。MySQL作为目前世界上最流行的关系型数据库管理系统,一直以来在数据处理领域受到了广泛的应用。MySQL具有性能高、易用性好、灵活性强等优点,但数据导入导出过程中可能会存在重复或无效数据,因此本文将介绍如何使用Go语言进行MySQL数据库的数据导入导出过滤的方法。一、环境搭建安装MySQL数据库在开


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境