加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

从数据库中导入导出数据

发布时间:2022-10-06 11:22:33 所属栏目:MySql教程 来源:
导读:  从数据库中导入数据

  MySQLimport

  1)MySQLimport的语法介绍:

  MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个
  从数据库中导入数据
 
  MySQLimport
 
  1)MySQLimport的语法介绍:
 
  MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可供选择。这个工具把一个文本文件(textfile)导入到你指定的数据库和表中。比方说我们要从文件text.txt中把数据导入到数据库Meet_A_Geek中的表Custermers中:
 
  MySQLimportMeet_A_Geektext.txt
 
  注意:这里text.txt是我们要导入数据的文本文件,而Meet_A_Geek是我们要操作的数据库,数据库中的表名是Customers,这里文本文件的数据格式必须与Customers表中的记录格式一致,否则MySQLimport命令将会出错。
 
  那么我们将把文件中的内容导入到数据库Meet_A_Geek中的Cus表中。
 
  上面的例子中,只用到两个参数,并没有用到更多的选项,下面介绍MySQLimport的选项
 
  2)MySQLimport的常用选项介绍:
 
  选项功能
 
  -dor--delete新数据导入数据表中之前删除数据数据表中的所有信息
 
  -for--force不管是否遇到错误,MySQLimport将强制继续插入数据
 
  -ior--ignoreMySQLimport跳过或者忽略那些有相同唯一关键字的行,导入文件中的数据将被忽略。
 
  -lor-lock-tables数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
 
  -ror-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","1DozenRoses","19991226"
 
  我们的任务是要把这个文件里面的数据导入到数据库Meet_A_Geek中的表格Orders中MySQL 导出数据,我们使用这个命令:
 
  bin/MySQLimport–prl–fields-enclosed-by="–fields-terminated-by=,Meet_A_GeekOrders.txt
 
  这个命令可能看起来很不爽,不过当你熟悉了之后,这是非常简单的。第一部分,bin/MySQLimport,告诉操作系统你要运行的命令是MySQL/bin目录下的MySQLimport,选项p是要求输入密码,这样就要求你在改动数据库之前输入密码,操作起来会更安全。我们用了r选项是因为我们想要把表中的唯一关键字与文件记录中有重复唯一关键字的记录替换成文件中的数据。我们表单中的数据不是最新的,需要用文件中的数据去更新,因而就用r这个选项,替代数据库中已经有的记录。l选项的作用是在我们插入数据的时候锁住表,这样就阻止了用户在我们更新表的时候对表进行查询或者更改的操作。
 
  批处理是一种非交互式运行MySQL程序的方法,如同在MySQL中使用的命令一样,你仍然将使用这些命令。
 
  为了实现批处理,重定向一个文件到MySQL程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在MySQL中输入的命令相同的文本。
 
  比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):
 
  USEMeet_A_Geek;
 
  INSERTINTOCustomers(Customer_ID,Last_Name)VALUES(NULL,"Block");
 
  INSERTINTOCustomers(Customer_ID,Last_Name)VALUES(NULL,"Newton");
 
  INSERTINTOCustomers(Customer_ID,Last_Name)VALUES(NULL,"Simmons");
 
  注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。
 
  上面的USE命令选择数据库,INSERT命令插入数据。
 
  下面我们要把上面的文件导入到数据库中,导入之前要确认数据库已经在运行,即是MySQLd进程(或者说服务,WindowsNT下面称为”服务“,unix下面为”进程“)已经在运行。
 
  然后运行下面的命令:
 
  bin/MySQL–p2000"Meet_A_GeekOrders>Special_Dump.txt
 
  MySQLdump工具有大量的选项,部分选项如下表:
 
  选项/Option作用/ActionPerformed
 
  --add-drop-table
 
  这个选项将会在每一个表的前面加上DROPTABLEIFEXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除
 
  --add-locks
 
  这个选项会在INSERT语句中捆上一个LOCKTABLE和UNLOCKTABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
 
  -cor-complete_insert
 
  这个选项使得MySQLdump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
 
  --delayed-insert在INSERT命令中加入DELAY选项
 
  -For-flush-logs使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
 
  -for-force使用这个选项,即使有错误发生,仍然继续导出
 
  --full这个选项把附加信息也加到CREATETABLE的语句中
 
  -lor-lock-tables使用这个选项,导出表的时候服务器将会给表加锁。
 
  -tor-no-create-info
 
  这个选项使的MySQLdump命令不创建CREATETABLE语句,这个选项在只需要数据而不需要DDL(数据库定义语句)时很方便。
 
  -dor-no-data这个选项使的MySQLdump命令不创建INSERT语句。
 
  在只需要DDL语句时,可以使用这个选项。
 
  --opt此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
 
  -qor-quick这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
 
  -Tpathor-tab=path这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。目录必须已经存在,并且命令的使用者有对文件的特权。
 
  -w"WHEREClause"or-where="Whereclause"
 
  如前面所讲的,可以使用这一选项来过筛选将要放到导出文件的数据。
 
  假定需要为一个表单中要用到的帐号建立一个文件,经理要看今年(2004年)所有的订单(Orders),它们并不对DDL感兴趣,并且需要文件有逗号分隔,因为这样就很容易导入到Excel中。为了完成这个人物,可以使用下面的句子:
 
  bin/MySQLdump–p–where"Order_Date>='2000-01-01'"
 
  –tab=/home/mark–no-create-info–fields-terminated-by=,Meet_A_GeekOrders
 
  这将会得到想要的结果。
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!