仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 725|回复: 9
打印 上一主题 下一主题

[学习教程] 绝无经由的用批处置对MySQL举行数据操纵

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
甚至一个有经验的Windows管理者也可以轻松部署并开始学习它,而你不需投入一分钱来了解这个数据库。批处置是一种非交互式运转MySQL程序的办法,好像您在mysql中利用的命令一样,你仍旧将利用这些命令。  批处置是一种非交互式运转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/mysqlCp</home/mark/New_Data.sql

  接着按提醒输出暗码,假如下面的文件中的语句没有毛病,那末这些数据就被导进到了数据库中。

  命令行中利用LOADDATAINFILE从文件中导进数据到数据库:

  如今您大概会问本人,"事实为何我要输出一切的这些SQL语句到文件中,然后经由过程程序运转它们呢?”

  如许看起来仿佛必要大批的事情。很好,你如许想极可能就对了。可是假设你有从一切这些命令中发生的log纪录呢?如今如许就很棒,嗯,年夜多半数据库城市主动发生数据库中的事务纪录的log。而年夜部分log都包括有效过的原始的SQL命令。因而,假如您不克不及从您如今的数据库中导出数据到新的mysql数据库中利用,那末您可使用log和mysql的批处置特征,来疾速且便利地导进您地数据。固然,如许就省往了打字的贫苦。

  LOADDATAINFILE

  这是我们要先容的最初一个导进数据到MySQL数据库中的办法。这个命令与mysqlimport十分类似,但这个办法能够在mysql命令行中利用。也就是说您能够在一切利用API的程序中利用这个命令。利用这类办法,您就能够在使用程序中导进您想要导进的数据。

  利用这个命令之前,mysqld历程(服务)必需已在运转。

  启动mysql命令行:

  bin/mysqlCp

  按提醒输出暗码,乐成进进mysql命令行以后,输出上面的命令:

  USEMeet_A_Geek;

  LOADDATAINFILE"/home/mark/data.sql"INTOTABLEOrders;

  复杂的讲,如许将会把文件data.sql中的内容导进到表Orders中,如mysqlimport工具一样,这个命令也有一些能够选择的参数。好比您必要把本人的电脑上的数据导进到远程的数据库服务器中,您可使用上面的命令:

  LOADDATALOCALINFILE"C:MyDoCSSQL.txt"INTOTABLEOrders;

  下面的LOCAL参数暗示文件是当地的文件,服务器是您所上岸的服务器。如许就省往了利用ftp来上传文件到服务器,MySQL替你完成了.

  您也能够设置拔出语句的优先级,假如您要把它标志为低优先级(LOW_PRIORITY),那末MySQL将会比及没有其别人读这个表的时分,才把拔出数据。可使用以下的命令:

  LOADDATALOW_PRIORITYINFILE"/home/mark/data.sql"INTOTABLEOrders;

  您也能够指定是不是在拔出数据的时分,代替大概疏忽文件与数据表中反复的键值。替换反复的键值的语法:

  LOADDATALOW_PRIORITYINFILE"/home/mark/data.sql"REPLACEINTOTABLEOrders;

  下面的句子看起来有点愚笨,但却把关头字放在了让您的分析器能够了解的中央。

  上面的一对选项形貌了文件的纪录格局,这些选项也是在mysqlimport工具中能够用的。他们在这里看起来有点分歧。起首,要用到FIELDS关头字,假如用到这个关头字,MySQL分析器但愿看到最少有上面的一个选项:

  TERMINATEDBYcharacter

  ENCLOSEDBYcharacter

  ESCAPEDBYcharacter

  这些关头字与它们的参数跟mysqlimport中的用法是一样的.The

  TERMINATEDBY形貌字段的分开符,默许情形下是tab字符(        )

  ENCLOSEDBY形貌的是字段的括起字符。例如以引号括起每个字段。

  ESCAPEDBY形貌的本义字符。默许的是反些杠(backslash:).

  上面仍旧利用后面的mysqlimport命令的例子,用LOADDATAINFILE语句把一样的文件导进到数据库中:

  LOADDATAINFILE"/home/mark/Orders.txt"REPLACEINTOTABLEOrdersFIELDSTERMINATEDBY,ENCLOSEDBY";

  LOADDATAINFILE语句中有一个mysqlimport工具中没有特性:

  LOADDATAINFILE能够按指定的列把文件导进到数据库中。

  当我们要把数据的一部份内容导进的时分,这个特性就很主要。例如说,我们要从[url=http://www.ckuyun.com/article.asp?typeid=173]access[/url]数据库晋级到MySQL数据库的时分,必要到场一些栏目(列/字段/field)到MySQL数据库中,以顺应一些分外的必要。

  这个时分,我们的Access数据库中的数据仍旧是可用的,可是由于这些数据的栏目(field)与MySQL中的不再婚配,因而而没法再利用mysqlimport工具。只管云云,我们仍旧可使用LOADDATAINFILE,上面的例子显现了怎样向指定的栏目(field)中导进数据:

  LOADDATAINFILE"/home/Order.txt"INTOTABLEOrders(Order_Number,Order_Date,Customer_ID);

  如您所见,我们能够指定必要的栏目(fields)。这些指定的字段仍然是以括号括起,由逗号分开的,假如您漏掉了个中任何一个,MySQL将会提示您。
不可否认,MySQL也是一个很好的关系型数据库,或许在技术上它与其他领先的关系数据库相差并不大,或不具有劣势。但是,对于一些企业环境来说,MySQL显然不具有优势。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-18 18:17:30 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-18 18:17:30 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-25 17:35:30 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
海妖 该用户已被删除
5#
发表于 2015-2-3 12:14:22 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
谁可相欹 该用户已被删除
6#
发表于 2015-2-8 22:00:05 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
金色的骷髅 该用户已被删除
7#
发表于 2015-2-26 11:36:40 | 只看该作者
无法深入到数据库系统层面去了解和探究
admin 该用户已被删除
8#
发表于 2015-3-8 14:40:48 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-16 02:56:59 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
再现理想 该用户已被删除
10#
发表于 2015-3-22 19:20:16 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-30 01:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表