我想大家都知道数据导入和导入可以使用mysql自带的功具mysqldump来实现,同时也可以自定义程序来实现,下面我介绍了二种方法。
先来讲讲利用比如到处数据用逗号(‘),竖线(|)隔开的数据。很多人会说使用用
代码如下 复制代码
-uuser -ppwd dbname -e “$sql”
进行导出。
其中$sql使用
代码如下 复制代码
select * from `tablename` where xxx into outfile “指定文件路劲” fields terminated by ”|“
这种往往很多会报没有权限之类的莫名其妙的错误。
错误一
代码如下 复制代码
errorerror 1045 (28000) at line 1: access denied for user 'qinghua'@'localhost' (using password: yes)
错误二
代码如下 复制代码
errorerror 1 (hy000) at line 1: can't create/write to file '/home/martin/outfile' (errcode: 13)
错误一是由于普通用户没有执行权限,错误二是由于没有权限穿件文件”aa”。
正确的做应该是
代码如下 复制代码
shellmysql -uqinghua -p123456 qinghua --e * from qinghua.user where 1 into outfile 'outfile' fields terminated by'|'
这样它穿件的文件会出现在mysql datadir目录对应的文件夹内。
如果想把文件创建到指定目录内。那你一定得赋予改目录mysql写入权限。
一般的做法是
代码如下 复制代码
mkdir -p /home/martin/outdata;
chown mysql.mysql /home/martin/outdata;
sudo chmod 777 /home/martin/outdata;
shellmysql -uqinghua -p123456 qinghua --e select * from qinghua.user where 1 into outfile '/home/martin/outdata/outfile' fields terminated by'|'
mysqldump参数介绍: 相关文章
–w 设定导出的条件。
–no-create-db 导出时不到出穿件数据库。
–no-create-info 不创建表结构。
–xml 导出xml格式文件。
–skip-add-drop-table 不创建删除表结构语句。
一般使用 mysql -uuser -ppwd dbname
参考地址:
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
http://dev.mysql.com/doc/refman/5.1/zh/replication.html 生成二进制日志,进行双机热备
再看看其它的方法
导出程序如下:调用方法为 ****.?table=tablename
这个简单的程序目前一次保存一个表格!!每行为一个字段的数据!!
代码如下 复制代码
if($table==)exit();
mysql_connect(localhost,name,password);
mysql_select_db(database);
$result = mysql_query(select * from $table);
if(mysql_num_rows($result) echo 开始转换数据到文本...
;
$handle = ($table.txt,w);
$numfields = mysql_num_fields($result);
fputs($handle,$numfields.rn);
for($k=0;$k
{
$msg = mysql_fetch_row($result);
for($i=0;$i{
$msg[$i] = str_replace(rn,&&php2000mysqlreturn&&,$msg[$i]);
$msg[$i] = str_replace(n ,&&php2000mysqlreturn&&,$msg[$i]);
fputs($handle,$msg[$i].rn);
}
fputs($handle,------- php2000 dump data program v1.0 for mysql --------rn);
}
fclose($handle);
echo ok;
?>
导入的程序如下:用法同上面!
代码如下 复制代码
if($table==)exit();
mysql_connect(localhost,name,password);
mysql_select_db(database);
$message = file($table.txt);
echo $numfields = chop($message[0]);
for($k=1;$k
{
$value=;
for ($i=$k;$i{
$tmp = str_replace(&&php2000mysqlreturn&&,rn,chop($message[$i]));
$value .= '.addslashes($tmp).',;
}
$tmp = str_replace(&&php2000mysqlreturn&&,rn,chop($message[$k+$numfields-1]));
$value .= '.$tmp.';
$query = insert into $table values (.$value.);
echo mysql_error();
mysql_query($query);
echo $k. ;
}
echo ok;
?>