用批处理对MySQL进行数据操作
批处置惩罚是一种非交互式运行mysql程序的要领,如同您在mysql中利用的下令一样,你仍旧将利用这些下令。
为了实现批处置惩罚,您重定向一个文件到mysql程序中,起首我们必要一个文本文件,这个文本文件包罗有与我们在mysql中输出的下令雷同的文本。
比如我们要拔出一些数据,利用包罗下面文本的文件(文件名为New_Data.sql,固然我们也可以取名为New_Data.txt及任何其他的合法名字,并纷歧定要当前缀sql末端):
USE Meet_A_Geek;
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Block");
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Newton");
INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Simmons");
注意下面的这些句子的语法都必需是精确的,并且每个句子以分号结束。
下面的USE下令选择数据库,INSERT下令拔出数据。
下面我们要把下面的文件导入到数据库中,导入之前要确认数据库已经在运行,便是mysqld历程(大概说办事,Windows NT下面称为”办事“,unix下面为”历程“)已经在运行。
然后运行下面的下令:
bin/mysql –p < /home/mark/New_Data.sql
接着按提示输出暗码,要是下面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。
下令行中利用LOAD DATA INFILE 从文件中导入数据到数据库:
如今您可能会问自己,"真相为什么我要输出所有的这些SQL语句到文件中,然后通历程序运行它们呢?”
如许看起来好像必要大量的事情。很好,你如许想很可能就对了。但是倘使你有从所有这些下令中产生的log记载呢?如今如许就很棒,嗯,大少数数据库都会自动产生数据库中的变乱记载的log。而大部分log都包罗有用过的原始的SQL下令。因此,要是您不克不及从您如今的数据库中导出数据到新的mysql数据库中利用,那么您可以利用log和mysql的批处置惩罚特性,来快速且方便地导入您地数据。固然,如许就省去了打字的贫苦。
LOAD DATA INFILE
这是我们要介绍的末了一个导入数据到MySQL数据库中的要领。这个下令与mysqlimport非常相似,但这个要领可以在mysql下令行中利用。也便是说您可以在所有利用API的程序中利用这个下令。利用这种要领,您就可以在使用程序中导入您想要导入的数据。
利用这个下令之前,mysqld历程(办事)必需已经在运行。
启动mysql下令行:
bin/mysql –p
按提示输出暗码,乐成进入mysql下令行之后,输出下面的下令:
USE Meet_A_Geek;
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;
简单的讲,如许将会把文件data.sql中的内容导入到表Orders中,如mysqlimport东西一样,这个下令也有一些可以选择的参数。比如您必要把自己的电脑上的数据导入到远程的数据库办事器中,您可以利用下面的下令:
LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE Orders;
下面的LOCAL参数表现文件是当地的文件,办事器是您所登岸的办事器。
如许就省去了利用ftp来上传文件到办事器,MySQL替你完成了.
您也可以设置拔出语句的优先级,要是您要把它标志为低优先级(LOW_PRIORITY),那么MySQL将会等到没有其别人读这个表的时候,才把拔出数据。可以利用如下的下令:
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders;
您也可以指定是否在拔出数据的时候,代替大概纰漏文件与数据表中重复的键值。替换重复的键值的语法:
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Orders;
下面的句子看起来有点笨拙,但却把关键字放在了让您的分析器可以理解的中央。
下面的一对选项形貌了文件的记载格式,这些选项也是在mysqlimport东西中可以用的。他们在这里看起来有点不同。起首,要用到FIELDS关键字,要是用到这个关键字,MySQL分析器希望看到至少有下面的一个选项:
TERMINATED BY character
ENCLOSED BY character
ESCAPED BY character
这些关键字与它们的参数跟mysqlimport中的用法是一样的. The
TERMINATED BY 形貌字段的分隔符,默许情况下是tab字符(\t)
ENCLOSED BY形貌的是字段的括起字符。比喻以引号括起每一个字段。
ESCAPED BY 形貌的转义字符。默许的是反些杠(backslash:\ ).
下面仍旧利用后面的mysqlimport下令的例子,用LOAD DATA INFILE语句把异样的文件导入到数据库中:
LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ',' ENCLOSED BY '"';
LOAD DATA INFILE语句中有一个mysqlimport东西中没有特点:
LOAD DATA INFILE 可以按指定的列把文件导入到数据库中。
当我们要把数据的一部分内容导入的时候,这个特点就很紧张。比喻说,我们要从Access数据库升级到MySQL数据库的时候,必要参加一些栏目(列/字段/field)到MySQL数据库中,以适应一些分外的必要。
这个时候,我们的Access数据库中的数据仍旧是可用的,但是因为这些数据的栏目(field)与MySQL中的不再匹配,因此而无法再利用mysqlimport东西。尽管云云,我们仍旧可以利用LOAD DATA INFILE,下面的例子显示了怎样向指定的栏目(field)中导入数据:
LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);
如您所见,我们可以指定必要的栏目(fields)。这些指定的字段仍然是以括号括起,由逗号分隔的,要是您脱漏了其中任何一个,MySQL将会提示您
Importing Data from Microsoft Access (从Access中导入数据,略)
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|