• 技术文章 >后端开发 >php教程

    MySQL数据导入导出方法与工具介绍_PHP教程

    2016-07-13 17:34:00原创464
    摘自http://qfxy.org.ru/read.php?tid=3071&page=e

    MySQL数据导入导出方法与工具介绍(1)
    翻译声明:
    本文内容来自Sams Teach Yourself MySQL in 21 Days一书的部分内容,by Mark Maslakowski
    英文原文版权属原作者所有,中文的部分翻译有略有增删;原书讲的过于清楚的地方有删,讲的不清楚的地方有增;如果有翻译的不妥或者不正确的地方,请指正。

    翻译者:David Euler,SCU. de_euler-david@www.yahoo.com.cn
    时间:2004/04/24于川大

    1).mysqlimport的语法介绍:
    mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可供选择。这个工具把一个文本文件(text file)导入到你指定的数据库和表中。比方说我们要从文件Customers.txt中把数据导入到数据库Meet_A_Geek中的表 Custermers中:
    mysqlimport Meet_A_Geek Customers.txt
    注意:这里Customers.txt是我们要导入数据的文本文件,而Meet_A_Geek是我们要操作的数据库,数据库中的表名是Customers,这里文本文件的数据格式必须与Customers表中的记录格式一致,否则mysqlimport命令将会出错。
    其中表的名字是导入文件的第一个句号(.)前面文件字符串,另外一个例子:
    mysqlimport Meet_A_Geek Cus.to.mers.txt
    那么我们将把文件中的内容导入到数据库Meet_A_Geek 中的Cus表中。上面的例子中,都只用到两个参数,并没有用到更多的选项,下面介绍mysqlimport的选项。

    2).mysqlimport的常用选项介绍:
    选项 功能
    -d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
    -f or --force 不管是否遇到错误,mysqlimport将强制继续插入数据
    -i or --ignore mysqlimport跳过或者忽略那些有相同唯一关键字的行, 导入文件中的数据将被忽略。
    -l or -lock-tables 数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
    -r or -replace 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。
    --fields-enclosed- by= char
    指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起。 默认的情况下数据是没有被字符括起的。
    --fields-terminated- by=char
    指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。您可以用此选项指定数据之间的分隔符。默认的分隔符是跳格符(Tab)
    --lines-terminated- by=str
    此选项指定文本文件中行与行之间数据的分隔字符串或者字符。 默认的情况下mysqlimport以newline为行分隔符。
    您可以选择用一个字符串来替代一个单个的字符:一个新行或者一个回车。
    mysqlimport命令常用的选项还有-v 显示版本(version), -p 提示输入密码(password)等。

    3).例子:导入一个以逗号为分隔符的文件文件中行的记录格式是这样的:
    "1", "ORD89876", "1 Dozen Roses", "19991226"
    我们的任务是要把这个文件里面的数据导入到数据库Meet_A_Geek中的表格Orders中,我们使用这个命令:
    bin/mysqlimport –prl –fields-enclosed-by=" –fields-terminated-by=, Meet_A_Geek Orders.txt
    这个命令可能看起来很不爽,不过当你熟悉了之后,这是非常简单的。
    第一部分,bin/mysqlimport ,告诉操作系统你要运行的命令是mysql/bin目录下的mysqlimport,选项p是要求输入密码,这样就要求你在改动数据库之前输入密码,操作起来会更安全。我们用了r选项是因为我们想要把表中的唯一关键字与文件记录中有重复唯一关键字的记录替换成文件中的数据。我们表单中的数据不是最新的,需要用文件中的数据去更新,因而就用r这个选项,替代数据库中已经有的记录。l选项的作用是在我们插入数据的时候锁住表,这样就阻止了用户在我们更新表的时候对表进行查询或者更改的操作。

    --------------------------------------------------------------------------------
    从 MySQL 导入导出大量数据的程序实现方法
    http://www.cx66.com/cxgzs/tips/00773.htm
    大家一定使用过 phpmyadmin 里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题:
    1、数据库超过一定尺寸,比如6M 这时使用导出一般没问题,可以正确的保存到本机硬盘上面,但是导入则不行!原因是:一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M,而phpmyadmin使用了上传的方式,造成失败。
    2、导出到硬盘的 .SQL 文件在导回时,经常出现由于某些单引号的问题引起失败,造成导入失败,只能用 mysql等应用程序导入了。
    我的数据库已经超过10M,所以必须解决这个问题。我的思路:
    导出: 用phpmyadmin 保存数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
    导入: 用phpmyadmin 恢复数据库/表格结构,用脚本读取文件,然后保存到库里面!

    导出程序如下:调用方法为 ****.php?table=tablename
    这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!
    if($table=="")exit();
    mysql_connect("localhost","name","password");
    mysql_select_db("database");
    $result = mysql_query("select * from $table");
    if(mysql_num_rows($result) < = 0) exit();
    echo "开始转换数据到文本...
    ";
    $handle = fopen("$table.txt","w");
    $numfields = mysql_num_fields($result);
    fputs($handle,$numfields." ");
    for($k=0;$k
    {
    $msg = mysql_fetch_row($result);
    for($i=0;$i< $numfields;$i++)
    {
    $msg[$i] = str_replace(" ","&&php2000mysqlreturn&&",$msg[$i]);
    $msg[$i] = str_replace(" " ,"&&php2000mysqlreturn&&",$msg[$i]);
    fputs($handle,$msg[$i]." ");
    }
    fputs($handle,"------- php2000 dump data program V1.0 for MySQL -------- ");
    }
    fclose($handle);
    echo "ok";
    ?>

    导入的程序如下:用法同上面!
    if($table=="")exit();
    mysql_connect("localhost","name","password");
    mysql_select_db("database");
    $message = file("$table.txt");
    echo $numfields = chop($message[0]);
    for($k=1;$k
    {
    $value="";
    for ($i=$k;$i< ($k+$numfields-1);$i++)
    {
    $tmp = str_replace("&&php2000mysqlreturn&&"," ",chop($message[$i]));
    $value .= "".addslashes($tmp).",";
    }
    $tmp = str_replace("&&php2000mysqlreturn&&"," ",chop($message[$k+$numfields-1]));
    $value .= "".$tmp."";
    $query = "insert into $table values (".$value.")";
    echo mysql_error();
    mysql_query($query);
    echo $k." ";
    }
    echo "ok";
    ?>

    使用方法和可能的问题!
    1、导入时 file()函数可能会有问题(我的10M的数据没出现问题),可以改为 fopen()然后没次读一行!!
    2、导入,导出都需要用 ftp 操作,也就是导出后,用 ftp 把数据转到本机,导入时先用ftp转移数据到服务器!
    ----------------------------

    mysql数据库常用导出导入命令的几个用例
    www.yiz.name
    ================================
    几个常用用例:

    1.导出整个数据库
    mysqldump -u 用户名 -p 数据库名 > 导出的文件名
    mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
    2.导出一个表
    mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
    mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
    3.导出一个数据库结构
    mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql

    -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop tab

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508509.htmlTechArticle摘自http://qfxy.org.ru/read.php?tid=3071page=e MySQL数据导入导出方法与工具介绍(1) 翻译声明: 本文内容来自Sams Teach Yourself MySQL in 21 Days一书的部分...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    20期PHP线上班

      相关课程推荐

    • 独孤九贱(3)_JavaScript视频教程

      javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。没有它,你的前端生涯是不完整的。《php.cn独孤九贱(3)-JavaScript视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了javascript知识。

      JavaScript教程128686次播放


    • 独孤九贱(6)_jQuery视频教程

      jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。 核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等,是全球最流行的前端开发框架之一。PHP中文网根据最新版本,独家录制jQuery最新视频教程,回馈PHP中文网的新老用户。

      jQuery教程106353次播放


    • jQuery与Ajax基础与实战

      jQuery是最流行的JS函数库,封装了许多实用的功能,其中最引人入胜的就是Ajax。 jQuery中的Ajax操作,语法简单,操作方便,使Ajax从未如此轻松,前端人员从此不再为与服务器异步交互而发愁,本套课程,精选了最常用的几个方法,从基本的语法到每个参数,再到具体实例进行了全面的讲解。

      AJAX教程6962次播放


    • Git教程(60分钟全程无废话版)

      Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

      JavaScript教程6011次播放


    1/1