仓酷云 发表于 2015-1-16 22:45:31

MYSQL编程:小技能:用批处置对MySQL举行数据操纵

即使对于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能够按指定的列把文件导进到数据库中。
  当我们要把数据的一部份内容导进的时分,这个特性就很主要。例如说,我们要从Access数据库晋级到MySQL数据库的时分,必要到场一些栏目(列/字段/field)到MySQL数据库中,以顺应一些分外的必要。
  这个时分,我们的Access数据库中的数据仍旧是可用的,可是由于这些数据的栏目(field)与MySQL中的不再婚配,因而而没法再利用mysqlimport工具。只管云云,我们仍旧可使用LOADDATAINFILE,上面的例子显现了怎样向指定的栏目(field)中导进数据:
  LOADDATAINFILE"/home/Order.txt"INTOTABLEOrders(Order_Number,Order_Date,Customer_ID);
  
  如您所见,我们能够指定必要的栏目(fields)。这些指定的字段仍然是以括号括起,由逗号分开的,假如您漏掉了个中任何一个,MySQL将会提示您
  
  ImportingDatafromMicrosoftAccess(从Access中导进数据,略)如IBM公司最近宣布让渠道合作伙伴分销其SaaS应用程序的新计划。微软认为MySQL学习教程是销售其云计算服务的重要组成部分。然而即使有这种趋势,DBaaS仍然不同于内部数据库,解决方案提供商必须认识到这一点;否则,他们不仅仅是丢失几个客户,而是要失去的更多。

飘灵儿 发表于 2015-1-19 22:51:03

还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。

分手快乐 发表于 2015-1-25 21:33:20

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

只想知道 发表于 2015-2-4 03:18:46

SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。

冷月葬花魂 发表于 2015-2-9 13:50:31

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

兰色精灵 发表于 2015-2-27 06:38:20

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

小女巫 发表于 2015-3-8 23:17:13

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

小魔女 发表于 2015-3-16 18:17:17

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)

简单生活 发表于 2015-3-22 23:34:15

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
页: [1]
查看完整版本: MYSQL编程:小技能:用批处置对MySQL举行数据操纵