批处理是
![](/icons/28299yi.gif)
种非交互式运行mysql
![](/icons/28299chengxu.gif)
![](/icons/28299de.gif)
思路方法
![](/icons/28299dou.gif)
如同您在mysql中使用
![](/icons/28299de.gif)
命令
![](/icons/28299yi.gif)
样
![](/icons/28299dou.gif)
你仍然将使用这些命令
为了实现批处理
![](/icons/28299dou.gif)
您重定向
![](/icons/28299yi.gif)
个文件到mysql
![](/icons/28299chengxu.gif)
中
![](/icons/28299dou.gif)
首先我们需要
![](/icons/28299yi.gif)
个文本文件
![](/icons/28299dou.gif)
这个文本文件包含有和我们在mysql中输入
![](/icons/28299de.gif)
命令相同
![](/icons/28299de.gif)
文本
比如我们要插入
![](/icons/28299yi.gif)
些数据
![](/icons/28299dou.gif)
使用包含下面文本
![](/icons/28299de.gif)
文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他
![](/icons/28299de.gif)
合法名字
![](/icons/28299dou.gif)
并不
![](/icons/28299yi.gif)
定要以后缀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");
注意上面
![](/icons/28299de.gif)
这些句子
![](/icons/28299de.gif)
语法都必须是正确
![](/icons/28299de.gif)
![](/icons/28299dou.gif)
并且每个句子以分号结束
上面
![](/icons/28299de.gif)
USE命令选择数据库
![](/icons/28299dou.gif)
INSERT命令插入数据
下面我们要把上面
![](/icons/28299de.gif)
文件导入到数据库中
![](/icons/28299dou.gif)
导入的前要确认数据库已经在运行
![](/icons/28299dou.gif)
即是mysqld进程(或者说服务
![](/icons/28299dou.gif)
NT下面称为”服务“
![](/icons/28299dou.gif)
unix下面为”进程“)已经在运行
然后运行下面
![](/icons/28299de.gif)
命令:
bin/mysql –p < /home/mark/New_Data.sql
接着按提示输入密码
![](/icons/28299dou.gif)
如果上面
![](/icons/28299de.gif)
文件中
![](/icons/28299de.gif)
语句没有
![](/icons/28299cuowu.gif)
![](/icons/28299dou.gif)
那么这些数据就被导入到了数据库中
命令行中使用LOAD DATA INFILE 从文件中导入数据到数据库:
现在您可能会问自己
![](/icons/28299dou.gif)
"究竟为什么我要输入所有
![](/icons/28299de.gif)
这些SQL语句到文件中
![](/icons/28299dou.gif)
然后通过
![](/icons/28299chengxu.gif)
运行它们呢?”
这样看起来好像需要大量
![](/icons/28299de.gif)
工作
![](/icons/28299dou2.gif)
很好
![](/icons/28299dou.gif)
你这样想很可能就对了
![](/icons/28299dou2.gif)
但是假如你有从所有这些命令中产生
![](/icons/28299de.gif)
log记录呢?现在这样就很棒
![](/icons/28299dou.gif)
嗯
![](/icons/28299dou.gif)
大多数数据库都会自动产生数据库中
![](/icons/28299de.gif)
事件记录
![](/icons/28299de.gif)
log
![](/icons/28299dou2.gif)
而大部分log都包含有用过
![](/icons/28299de.gif)
原始
![](/icons/28299de.gif)
SQL命令
![](/icons/28299dou2.gif)
因此
![](/icons/28299dou.gif)
如果您不能从您现在
![](/icons/28299de.gif)
数据库中导出数据到新
![](/icons/28299de.gif)
mysql数据库中使用
![](/icons/28299dou.gif)
那么您可以使用log和mysql
![](/icons/28299de.gif)
批处理特性
![](/icons/28299dou.gif)
来快速且方便地导入您地数据
![](/icons/28299dou2.gif)
当然
![](/icons/28299dou.gif)
这样就省去了打字
![](/icons/28299de.gif)
麻烦
LOAD DATA INFILE
这是我们要介绍
![](/icons/28299de.gif)
最后
![](/icons/28299yi.gif)
个导入数据到MySQL数据库中
![](/icons/28299de.gif)
思路方法
![](/icons/28299dou2.gif)
这个命令和mysqlimport非常相似
![](/icons/28299dou.gif)
但这个思路方法可以在mysql命令行中使用
![](/icons/28299dou2.gif)
也就是说您可以在所有使用API
![](/icons/28299de.gif)
![](/icons/28299chengxu.gif)
中使用这个命令
![](/icons/28299dou2.gif)
使用这种思路方法
![](/icons/28299dou.gif)
您就可以在应用
![](/icons/28299chengxu.gif)
中导入您想要导入
![](/icons/28299de.gif)
数据
使用这个命令的前
![](/icons/28299dou.gif)
mysqld进程(服务)必须已经在运行
启动mysql命令行:
bin/mysql –p
按提示输入密码
![](/icons/28299dou.gif)
成功进入mysql命令行的后
![](/icons/28299dou.gif)
输入下面
![](/icons/28299de.gif)
命令:
USE Meet_A_Geek;
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;
简单
![](/icons/28299de.gif)
讲
![](/icons/28299dou.gif)
这样将会把文件data.sql中
![](/icons/28299de.gif)
内容导入到表Orders中
![](/icons/28299dou.gif)
如mysqlimport工具
![](/icons/28299yi.gif)
样
![](/icons/28299dou.gif)
这个命令也有
![](/icons/28299yi.gif)
些可以选择
![](/icons/28299de.gif)
参数
![](/icons/28299dou2.gif)
比如您需要把自己
![](/icons/28299de.gif)
电脑上
![](/icons/28299de.gif)
数据导入到远程
![](/icons/28299de.gif)
数据库中
![](/icons/28299dou.gif)
您可以使用下面
![](/icons/28299de.gif)
命令:
LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE Orders;
上面
![](/icons/28299de.gif)
LOCAL参数表示文件是本地
![](/icons/28299de.gif)
文件
![](/icons/28299dou.gif)
是您所登陆
![](/icons/28299de.gif)
服务器
这样就省去了使用ftp来上传文件到服务器
![](/icons/28299dou.gif)
MySQL替你完成了.
您也可以设置插入语句
![](/icons/28299de.gif)
优先级
![](/icons/28299dou.gif)
如果您要把它标记为低优先级(LOW_PRIORITY)
![](/icons/28299dou.gif)
那么MySQL将会等到没有其他人读这个表
![](/icons/28299de.gif)
时候
![](/icons/28299dou.gif)
才把插入数据
![](/icons/28299dou2.gif)
可以使用如下
![](/icons/28299de.gif)
命令:
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders;
您也可以指定是否在插入数据
![](/icons/28299de.gif)
时候
![](/icons/28299dou.gif)
取代或者忽略文件和数据表中重复
![](/icons/28299de.gif)
键值
![](/icons/28299dou2.gif)
替代重复
![](/icons/28299de.gif)
键值
![](/icons/28299de.gif)
语法:
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Orders;
上面
![](/icons/28299de.gif)
句子看起来有点笨拙
![](/icons/28299dou.gif)
但却把关键字放在了让您
![](/icons/28299de.gif)
剖析器可以理解
![](/icons/28299de.gif)
地方
下面
![](/icons/28299de.gif)
![](/icons/28299yi.gif)
对选项描述了文件
![](/icons/28299de.gif)
记录格式
![](/icons/28299dou.gif)
这些选项也是在mysqlimport工具中可以用
![](/icons/28299de.gif)
![](/icons/28299dou2.gif)
他们在这里看起来有点区别
![](/icons/28299dou2.gif)
首先
![](/icons/28299dou.gif)
要用到FIELDS关键字
![](/icons/28299dou.gif)
如果用到这个关键字
![](/icons/28299dou.gif)
MySQL剖析器希望看到至少有下面
![](/icons/28299de.gif)
![](/icons/28299yi.gif)
个选项:
TERMINATED BY character
ENCLOSED BY character
ESCAPED BY character
这些关键字和它们
![](/icons/28299de.gif)
参数跟mysqlimport中
![](/icons/28299de.gif)
使用方法是
![](/icons/28299yi.gif)
样
![](/icons/28299de.gif)
. The
TERMINATED BY 描述字段
![](/icons/28299de.gif)
分隔符
![](/icons/28299dou.gif)
默认情况下是tab
![](/icons/28299zifu.gif)
(\t)
ENCLOSED BY描述
![](/icons/28299de.gif)
是字段
![](/icons/28299de.gif)
括起
![](/icons/28299zifu.gif)
![](/icons/28299dou2.gif)
比方以引号括起每
![](/icons/28299yi.gif)
个字段
ESCAPED BY 描述
![](/icons/28299de.gif)
转义
![](/icons/28299zifu.gif)
![](/icons/28299dou2.gif)
默认
![](/icons/28299de.gif)
是反些杠(backslash:\ ).
下面仍然使用前面
![](/icons/28299de.gif)
mysqlimport命令
![](/icons/28299de.gif)
例子
![](/icons/28299dou.gif)
用LOAD DATA INFILE语句把同样
![](/icons/28299de.gif)
文件导入到数据库中:
LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ',' ENCLOSED BY '"';
LOAD DATA INFILE语句中有
![](/icons/28299yi.gif)
个mysqlimport工具中没有特点:
LOAD DATA INFILE 可以按指定
![](/icons/28299de.gif)
列把文件导入到数据库中
当我们要把数据
![](/icons/28299de.gif)
![](/icons/28299yi.gif)
部分内容导入
![](/icons/28299de.gif)
时候
![](/icons/28299dou.gif)
这个特点就很重要
![](/icons/28299dou2.gif)
比方说
![](/icons/28299dou.gif)
我们要从Access数据库升级到MySQL数据库
![](/icons/28299de.gif)
时候
![](/icons/28299dou.gif)
需要加入
![](/icons/28299yi.gif)
些栏目(列/字段/field)到MySQL数据库中
![](/icons/28299dou.gif)
以适应
![](/icons/28299yi.gif)
些额外
![](/icons/28299de.gif)
需要
这个时候
![](/icons/28299dou.gif)
我们
![](/icons/28299de.gif)
Access数据库中
![](/icons/28299de.gif)
数据仍然是可用
![](/icons/28299de.gif)
![](/icons/28299dou.gif)
但是
![](/icons/28299yinwei.gif)
这些数据
![](/icons/28299de.gif)
栏目(field)和MySQL中
![](/icons/28299de.gif)
不再匹配
![](/icons/28299dou.gif)
因此而无法再使用mysqlimport工具
![](/icons/28299dou2.gif)
尽管如此
![](/icons/28299dou.gif)
我们仍然可以使用LOAD DATA INFILE
![](/icons/28299dou.gif)
下面
![](/icons/28299de.gif)
例子显示了如何向指定
![](/icons/28299de.gif)
栏目(field)中导入数据:
LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);
如您所见
![](/icons/28299dou.gif)
我们可以指定需要
![](/icons/28299de.gif)
栏目(fields)
![](/icons/28299dou2.gif)
这些指定
![](/icons/28299de.gif)
字段依然是以括号括起
![](/icons/28299dou.gif)
由逗号分隔
![](/icons/28299de.gif)
![](/icons/28299dou.gif)
如果您遗漏了其中任何
![](/icons/28299yi.gif)
个
![](/icons/28299dou.gif)
MySQL将会提醒您
Importing Data from Microsoft Access (从Access中导入数据
![](/icons/28299dou.gif)
略)
延伸阅读
最新评论