求助:从文件导入MYSQL数据库的记录有1689条,再用语句将其导出,却有1760条,是啥原因?
时间:2011-06-19
来源:互联网
我写一个图书管理程序,用的语言是C/C++,数据库有三个表,分别为book,type,author。数据库的结构如下:
SQL code
我将书籍信息写到一个文本文件里,文件的格式为:
书籍id(book.book_id)、书名(book.book_name)、书籍页数(book.book_page)、书籍类型id(book.book_type_id)、书籍类型(type.book_type)、作者(author.book_author)、译者(author.book_translater,无请输入NULL), 文件第一行为BEGINOFFILE,最后一行为ENDOFFILE
再用C++程序将其导入到数据库中,文本文件摘要如下(只有头尾):
SQL code
可以看到一共1689条信息,用程序导入后的确是1689条
SQL code
现在这1689条数据都在数据库里了,我想将其导出到文本文件,以备份,还是用C/C++语言,却发现最后导出到文件里的有1760条,多了92条。为简单起见,我就贴在mysql命令行里的内容了,在程序里用的是一模一样的SQL查询语句:
SQL code
可以看到book_id还是对的,最后一条是1689,但结果却有1760行,中间必然有重复的,请问是我的查询语句写错了吗?小弟初学数据库,请各位前辈赐教。谢谢!
SQL code
mysql> show tables; +----------------------+ | Tables_in_libmanager | +----------------------+ | author | | book | | type | +----------------------+ 3 rows in set (0.33 sec) mysql> describe book; +--------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+---------+----------------+ | book_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | book_name | varchar(100) | NO | | NULL | | | book_page | int(11) | NO | | NULL | | | book_type_id | int(10) unsigned | NO | | NULL | | +--------------+------------------+------+-----+---------+----------------+ 4 rows in set (0.11 sec) mysql> describe type; +--------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+-------+ | book_type_id | int(10) | NO | | 0 | | | book_type | varchar(100) | NO | PRI | NULL | | +--------------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> describe author; +-----------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------------+------+-----+---------+-------+ | book_id | int(10) unsigned | NO | PRI | NULL | | | book_author | varchar(100) | NO | | NULL | | | book_translater | varchar(100) | YES | | NULL | | +-----------------+------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
我将书籍信息写到一个文本文件里,文件的格式为:
书籍id(book.book_id)、书名(book.book_name)、书籍页数(book.book_page)、书籍类型id(book.book_type_id)、书籍类型(type.book_type)、作者(author.book_author)、译者(author.book_translater,无请输入NULL), 文件第一行为BEGINOFFILE,最后一行为ENDOFFILE
再用C++程序将其导入到数据库中,文本文件摘要如下(只有头尾):
SQL code
BEGINOFFILE 1 四朝政治风云 311 115 /丛书/走向未来丛书/1988年出版 怀效锋 NULL 2 人的发现:马丁.路德与宗教改革 228 111 /丛书/走向未来丛书/1984年出版 李平晔 NULL 3 增长的极限:罗马俱乐部关于人类困境的研究报告 251 111 /丛书/走向未来丛书/1984年出版 麻省理工学院研究计划小组 李宝恒 4 激动人心的年代:世纪之交物理学革命的历史考察和哲学探讨 324 111 /丛书/走向未来丛书/1984年出版 李醒民 NULL 5 GEB:一条永恒的金带 252 111 /丛书/走向未来丛书/1984年出版 道.霍夫斯塔特 乐秀成 6 现代物理学和东方神秘主义 256 111 /丛书/走向未来丛书/1984年出版 F.卡普拉 灌耕 7 现实与选择:当代中国工业的结构与体制 304 111 /丛书/走向未来丛书/1984年出版 朱家明 NULL ...... 1684 物理学(第五版)习题分析与解答 342 120813 /自然科学/物理/综合 马文蔚 NULL 1685 物理学:揭密系列(Physics.Demystified) 618 120813 /自然科学/物理/综合 Stan.Gibilisco NULL 1686 物理学难题集萃(增订本) 1318 120813 /自然科学/物理/综合 佚名 NULL 1687 物理学原理在工程技术中的应用 336 120813 /自然科学/物理/综合 马文蔚 NULL 1688 物理学中的非线性方程 403 120813 /自然科学/物理/综合 佚名 NULL 1689 应用物理学 279 120813 /自然科学/物理/综合 佚名 NULL ENDOFFILE
可以看到一共1689条信息,用程序导入后的确是1689条
SQL code
mysql> select count(*) from book; +----------+ | count(*) | +----------+ | 1689 | +----------+ 1 row in set (0.07 sec)
现在这1689条数据都在数据库里了,我想将其导出到文本文件,以备份,还是用C/C++语言,却发现最后导出到文件里的有1760条,多了92条。为简单起见,我就贴在mysql命令行里的内容了,在程序里用的是一模一样的SQL查询语句:
SQL code
mysql> select book.book_id, book.book_name, book.book_page, book.book_type_id, type.book_type, author.book_author, author.book_translater from book, type, author where book.book_type_id = type.book_type_id and book.book_id = author.book_id; ......(略去多条输出) | 1684 | 物理学(第五版)习题分析与解答 | 342 | 120813 | /自然科学/物理/综合 | 马文蔚 | NULL | | 1685 | 物理学:揭密系列(Physics.Demystified) | 618 | 120813 | /自然科学/物理/综合 | Stan.Gibilisco | NULL | | 1686 | 物理学难题集萃(增订本) | 1318 | 120813 | /自然科学/物理/综合 | 佚名 | NULL | | 1687 | 物理学原理在工程技术中的应用 | 336 | 120813 | /自然科学/物理/综合 | 马文蔚 | NULL | | 1688 | 物理学中的非线性方程 | 403 | 120813 | /自然科学/物理/综合 | 佚名 | NULL | | 1689 | 应用物理学 | 279 | 120813 | /自然科学/物理/综合 | 佚名 | NULL | +---------+------------------------------------------------------------------------------------------------------+-----------+--------------+------------------------------------------------------------------+--------------------------------------------------+-----------------------------------------+ 1760 rows in set (0.00 sec) mysql>
可以看到book_id还是对的,最后一条是1689,但结果却有1760行,中间必然有重复的,请问是我的查询语句写错了吗?小弟初学数据库,请各位前辈赐教。谢谢!
作者: zwdnet 发布时间: 2011-06-19
type, author 这两个表中有重复记录。
type(book_type_id) 是主键吗?
author(book_id)是主键吗?
type(book_type_id) 是主键吗?
author(book_id)是主键吗?
作者: ACMAIN_CHM 发布时间: 2011-06-19
问题应该是出在这个表上。book_type_id有重复的。
mysql> describe type;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| book_type_id | int(10) | NO | | 0 | |
| book_type | varchar(100) | NO | PRI | NULL | |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> describe type;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| book_type_id | int(10) | NO | | 0 | |
| book_type | varchar(100) | NO | PRI | NULL | |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
作者: ACMAIN_CHM 发布时间: 2011-06-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28