|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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显然不具有优势。 |
|