delphi 通过ODBC访问mysql,如何备份和还原数据库 mysql备份还原 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将上述语句放入BAT文件中,再用DELPHI调用or用ShellExecute执行上述mysqldump -uroot -p123 my_database >my_database.sql命令 有没有直接类似sql语句用的方法,直接在delphi里用sql语句备份? 我写在bat里运行,结果文件是生成了,但是里面没有内容,0kb 有没有直接类似sql语句用的方法,直接在delphi里用sql语句备份?如果你只是要数据,可以参考 select outfile ....mysqldump -uroot -p123 my_database >my_database.sql直接在系统命令行下运行,看看结果如何 在WINDOWS的DOS窗口下,进行MYSQL目录,运行mysqldump -uroot -p123 my_database >my_database.sql提示什么 Windows的dos窗体当然不能运行mysql语句了,是在 MYSQL Command Line Client下面运行的 mysqldump就是在dos下运行的 不需要进入mysql MYSQLDUMP是在WINDOWS的DOS窗口下运行的,你是怎么运行的? MYSQL Command Line Client 直接在DOS里运行结果是:‘mysqldump’不是内部或外部命令,也不是可运行的程序或批处理文件 在WINDOWS的DOS窗口下,进入MYSQL\BIN目录,运行 mysqldump -uroot -p123 my_database >my_database.sql 测试通过ShellExecute(1,'open',PChar('cmd.exe '),pchar('/c d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql'),nil,SW_SHOW);修改用户名、密码、数据库名即可 试了,但生成的是0kb,数据库和密码已经改了,用户名还是root 首先楼主需要确认自己的PC上有这个 msyqldump.exe执行文件。比如在目录c:\mysql\bin\mysqldump.exe然后再执行命令c:\mysql\bin\mysqldump.exe -uroot -p12345 db1>c:\xxx.sql 在WINDOWS下的DOS窗口下运行,提示什么,注意不是在MYSQL命令行下d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql' 测试通过,注意用户名、密码、目录名,最好先在系统命令行下运行,看看提示、结果,再放入DELPHI中unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellAPI;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginShellExecute(1,'open',PChar('cmd.exe '),pchar('/c d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql'),nil,SW_SHOW);end;end. 你把MYSQLDUMP COPY到1个短目录中试试,排除长目录名的问题,比如COPY到d:\MYSQL 目录中 呵呵,果然是长目录名的问题,1、COPY到1个短目录中;2、在目录名加引号"\mysql目录名\mysqldump.exe" -uroot -p..... 将上述MYSQLDUMP替换为下述语句mysql -uroot -p123 <aa.sql 发现这样导出的东西和用Navicat for MySql中的‘存储SQL文件’功能差不多,关键是导入的话一次性导入多条含中文值的数据就会乱码,这是什么原因? 是所有记录都是乱码?检查MYSQL字符集show variables like 'char%'; 是utf8的,已经改过了;是不是character_set_filesystem 这项的问题? 是utf8的,已经改过了:已经有记录了?如果是修改后要重新插入记录才行 那应该没有问题,我的也是UTF8字符集,用MYSQLDUMP、MYSQL备份、恢复没有问题,检查一下字段的字符集,如果都是UTF8的,恢复后应该是正常的汉字 INSERT INTO table_name VALUES (…含中文…);INSERT INTO table_name VALUES (…含中文…);INSERT INTO table_name VALUES (…含中文…);INSERT INTO table_name VALUES (…含中文…);……像上面这样一次性载入就会乱码而像下面把它看成一条sql就不会INSERT INTO table_name VALUES (…含中文…),(…含中文…),(…含中文…),(…含中文…),……; 把phpMyadmin中的表结构发出来看看。还有可能是数据库版本不同结果导致编码也不同。把/*!40101开头的都去掉再导入试试。 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具你用什么工具管理数据可? 你的表tab_oper_log的编码应该有问题 我导出使用'>',导入就把'>'改成'<'是这样吗?这样试了,看到DOS命令有运行,然后消失,但是再看表记录还是没有改变(导出数据后把部分表数据清空,导入后没有反应)? 导入:mysql -uroot -p123 <aa.sql导出:"\mysql目录名\mysqldump.exe" -uroot -p..... 导入不需要指定数据库名吗,我看导出的sql中也没有知道数据库名,只有注释中有说是哪个数据库? 如果在备份的SQL文件中有USE XXX,就不需要,否则mysql -uxx -pxx dbname<....具体的自行看看MYSQLDUMP、MYSQL的帮助 导出:"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -uroot -p123 TestDB > "C:\sqldata\MYSQLDB\TestDB.sql" 导入:mysql -uroot -p123 TestDB < "C:\sqldata\MYSQLDB\TestDB.sql" 导出成功了,导入失败? mysql -uroot -p123 TestDB < "C:\sqldata\MYSQLDB\TestDB.sql" 直接在系统命令行下运行,看看提示什么,怎么判断导入失败? 我是写成.bat文件运行的;运行后dos窗体瞬间没了,数据库还是老样子 mysql -uroot -p123 TestDB <C:\sqldata\MYSQLDB\TestDB.sql再运行直接在系统命令行下运行 后面去掉双引号运行后也是一样失败放dos命令下运行提示“不是内部或外部命令……” mysql Fulltext中文不用改服务器配套 Mysql的一些初级问题! mysql中连表字段设置索引的问题 大数据量表分表后如何实现关系查询? MySQL索引问题 调用存储过程错误 怎样用c语言调用mysql中的存储过程? MYSQL 隔段时间重起,日志不知道怎么打开,想让mysql 自动重起又不知道怎么办 ,继续帮助 谁有MYSQL设计命名规范?(比如:数据库名,表名等等) 银行存款的事务一般是怎样实现的?是否分布式?事务如何控制 关于MySQL的几个基础问题 sql根据一个表更新另外的表
or
用ShellExecute执行上述
mysqldump -uroot -p123 my_database >my_database.sql
命令
如果你只是要数据,可以参考 select outfile ....mysqldump -uroot -p123 my_database >my_database.sql
直接在系统命令行下运行,看看结果如何
mysqldump -uroot -p123 my_database >my_database.sql
提示什么
mysqldump -uroot -p123 my_database >my_database.sql
ShellExecute(1,'open',PChar('cmd.exe '),pchar('/c d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql'),nil,SW_SHOW);修改用户名、密码、数据库名即可
c:\mysql\bin\mysqldump.exe然后再执行命令c:\mysql\bin\mysqldump.exe -uroot -p12345 db1>c:\xxx.sql
d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql'
放入DELPHI中unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellAPI;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(1,'open',PChar('cmd.exe '),pchar('/c d:\mysql55\bin\mysqldump.EXE -uroot -p123 aa>r:\temp\AA.sql'),nil,SW_SHOW);
end;end.
COPY到d:\MYSQL 目录中
1、COPY到1个短目录中;
2、在目录名加引号
"\mysql目录名\mysqldump.exe" -uroot -p.....
mysql -uroot -p123 <aa.sql
检查MYSQL字符集
show variables like 'char%';
是utf8的,已经改过了;
是不是character_set_filesystem 这项的问题?
已经有记录了?如果是
修改后要重新插入记录才行
UTF8的,恢复后应该是正常的汉字
INSERT INTO table_name VALUES (…含中文…);
INSERT INTO table_name VALUES (…含中文…);
INSERT INTO table_name VALUES (…含中文…);
……
像上面这样一次性载入就会乱码
而像下面把它看成一条sql就不会
INSERT INTO table_name VALUES (…含中文…),
(…含中文…),
(…含中文…),
(…含中文…),
……;
还有可能是数据库版本不同结果导致编码也不同。
把/*!40101开头的都去掉再导入试试。
你用什么工具管理数据可?
这样试了,看到DOS命令有运行,然后消失,但是再看表记录还是没有改变(导出数据后把部分表数据清空,导入后没有反应)?
导出:"\mysql目录名\mysqldump.exe" -uroot -p.....
mysql -uxx -pxx dbname<....
具体的自行看看MYSQLDUMP、MYSQL的帮助
导入:mysql -uroot -p123 TestDB < "C:\sqldata\MYSQLDB\TestDB.sql" 导出成功了,导入失败?
直接在系统命令行下运行,看看提示什么,怎么判断导入失败?
运行后dos窗体瞬间没了,数据库还是老样子
再运行直接在系统命令行下运行
放dos命令下运行提示“不是内部或外部命令……”