mysql高手都来看看:sql语句导入导出数据错误.

pzp 2003-08-18 05:05:34
1 。
我直接在mysqlgui.exe中写sql: Select * from baseinfo into outfile 'mybaseinfo.txt' ; 会出现系统错误马上关闭了mysqlgui.exe,但语句还是执行了,可以找到mybaseinfo.txt.问:为何会出现系统错误啊,什么原因,我得语句好像没问题吧?
2。数据导入时我是在自己写的c++数据库程序里调试 filename为用户选择的原来导出的数据文件。
strQuery="load data infile '"+filename+"' into table baseinfo";
adoDel->SQL->Add(strQuery);
adoDel->Open();
但却出现错误:报错说d:mysqldatamydatabasemybaseinfo.txt 不存在.(filename里的斜扛都没了)??????
...全文
44 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzp 2003-08-19
  • 打赏
  • 举报
回复
新发现:
导入时用成功: strQuery="load data infile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' into table baseinfo";
dm1->adoDel->SQL->Add(strQuery);dm1->adoDel->ExecSQL();

但导出时还是那个错误:near 'limit 1346720336'...,
strQuery="Select * from baseinfo into outfile 'd:\\\\mysql\\\\data\\\\db_dzcp\\\\mybaseinfo.dzp' ";
dm1->adoDel->SQL->Add(strQuery); dm1->adoDel->Open();
导出你哪儿错了?


pzp 2003-08-19
  • 打赏
  • 举报
回复
1种方法我想用mysql_escape_string,但在c++builder 中使用时,我把libmysqld.lib包含进来了可总是出现错误:libmysqld.lib包含invalid OMD record,type 0x21,怎么解决呢
第2种方法我想直接用strquery=".....",然后直接adoquery->SQL->Add(strquery);但总会出错,没辙了
pzp 2003-08-19
  • 打赏
  • 举报
回复
shuixin13(犬犬(心帆)) :我把sql语句写成如下也不行,
strQuery="Select * from baseinfo into outfile 'd:/mysql/data/db_dzcp/mybaseinfo.txt' ";
lxf_1976 2003-08-19
  • 打赏
  • 举报
回复
呵呵,我对mysql在c++ builder中的使用不了解了
pzp 2003-08-19
  • 打赏
  • 举报
回复
我是在c++builder 中使用,我把libmysqld.lib包含进来了可总是出现错误:libmysqld.lib包含invalid OMD record,type 0x21,怎么解决呢
lxf_1976 2003-08-19
  • 打赏
  • 举报
回复
呵呵,我一直是按纯C API的方法论述的,重新看楼主的帖子后,楼主是用ADO做的!我对ADO不熟,那使用这样的笨办法试试,就是:
filename="d:\\\\mysql\\\\data\\\\mydatabase\\\\mybaseinfo.txt"

意思是filename这个参数被重叠赋值给其它变量几次,就要使用几层"\"的转义,如果不嫌烦,试试吧,:-)
shuixin13 2003-08-19
  • 打赏
  • 举报
回复
filename='d:/mysql/data/mydatabase/mybaseinfo.txt'
lxf_1976 2003-08-19
  • 打赏
  • 举报
回复
如果实在不清楚,调试一下,将最后提交给mysql时的strQuery打印出来看看
pzp 2003-08-19
  • 打赏
  • 举报
回复
mysql_escape_string要用到哪个库啊?
lxf_1976 2003-08-19
  • 打赏
  • 举报
回复
不知道我的说法对不对,是这样的:

在C API编程中
filename="d:\\mysql\\data\\mydatabase\\mybaseinfo.txt"
赋值给strQuery后,字符串已经理解为d:\mysql\data\mydatabase\mybaseinfo.txt
然后将strQuery提交给mysql,它还是认为没有对"\"转义

试试在提交strQuery给mysql前,再使用mysql_escape_string转义一下
pzp 2003-08-19
  • 打赏
  • 举报
回复
应该没错啊,c++中filename=d:mysql\\data\\mydatabase\\mybaseinfo.txt ,'\'是转义符,所以路径应该没错啊
lxf_1976 2003-08-19
  • 打赏
  • 举报
回复
是的,使用API提交SQL语句的时候一定要注意对转义的问题!在C API里,有一个mysql_escape_string(tostring, fromstring, fromstrlen)的函数就是实现转义功能的,详细信息请参考mysql手册!
pzp 2003-08-19
  • 打赏
  • 举报
回复
在my.ini 文件中加入下面一行
[mysqld]
log=d:/mysql/log/sql.log
还是没有日记文件
pzp 2003-08-19
  • 打赏
  • 举报
回复
我机器上怎么找不到日记文件啊
wangzi31323 2003-08-19
  • 打赏
  • 举报
回复
此SQL
中的语句C++下体现的是
非正常执行
根本在于服务器的过滤
shuixin13 2003-08-19
  • 打赏
  • 举报
回复
汗,

怎么会出现 limit 134....... 的呀,


建议你打开 MySQL 的 SQL 日志,
然后看看日志里你刚才出错的SQL语句是什么
bluemeteor 2003-08-18
  • 打赏
  • 举报
回复
不好意思,我以为是PHP的帖子,不过道理应该是一样的
bluemeteor 2003-08-18
  • 打赏
  • 举报
回复
filename里的斜扛被PHP的解释器“过滤了”

用\\代替\试试
pzp 2003-08-18
  • 打赏
  • 举报
回复
数据导入的时候错误里老是会出现near 'limit 1346720336'...,莫名其妙啊

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧