关于mysql数据库导入文本数据的问题

xylegend 2004-07-18 11:18:05
最近某些领导要求开发一个工资浏览系统:
目的是职员可以通过WEB的方式来浏览自己工资/奖金各项的奖扣等情况
原本用的数据库可以导出txt文本数据,文本里边的数据格式我不是很清楚(没看)
大概是用TAB分隔列,回车控制换行
他们的要求是必须是WIN*平台。。我的做法是使用PHP+APACHE+MYSQL的平台
对于导入数据,在试验的时候使用的是MYSQLIMPORT来导入,但是MySQL出现:The use command is not allowed with this MySQL version。。的错误
我用的是4.0.12-nt的版本,百思不得其解。。。
只好换用了5.0的版本
使用LOAD DATA INFILE的方式解决了文本导入的问题
但是觉得这种方法对于他们来说可能过于困难,甚至可能无法掌握……
谁有更好的解决办法么?
或者也可以说说对于整个系统的构成

最近郁闷极了…………
拿到的工资还不能填补半个月花费的一半。。。
整天监控的无聊,一个人还要开发那个玩意

谁有好的想法或者解决方案,欢迎说说。
可以单独再加。。郁闷透了
...全文
698 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
xylegend 2004-07-25
  • 打赏
  • 举报
回复
up
xylegend 2004-07-25
  • 打赏
  • 举报
回复
up
详情请见http://community.csdn.net/Expert/topic/3206/3206823.xml?temp=7.198733E-02
xylegend 2004-07-23
  • 打赏
  • 举报
回复
呵呵~~谢谢了!
明晚还是我值班,到时再开帖了。
再次感谢!
ice_berg16 2004-07-23
  • 打赏
  • 举报
回复
我的意思是导出的数据部分ID为空,这样导入的时候它会自增
不是字段为空,是值!
ice_berg16 2004-07-23
  • 打赏
  • 举报
回复
导入的时候字段是自增的,设成空就好了,
xylegend 2004-07-23
  • 打赏
  • 举报
回复
既然要将它设成主键怎么还能空呢?
ice_berg16 2004-07-23
  • 打赏
  • 举报
回复
如果没有ID字段,可以将这列设成空
这样在用load data infile时就不会出现你说的中断的现象了。
我前两天就是这样导文本的,一共导了2W多条,现在没什么问题
xylegend 2004-07-23
  • 打赏
  • 举报
回复
哦,或许这也是一个折中的办法了,无奈之举啊……
txt文本原本没有id字段,不过利用读取文本切分字串后再插入数据库的办法应该可实现自己另外加一个字段……
好的,我明天试一下。
对了,ice_berg16(寻梦的稻草人)大哥,分已经另外开帖给你加上了
这几天还会继续在监控机房,但是以后从省局培训回来后就可能没有什么机会来了
如果我试成功后,依然会另外开帖的,请进来。
谢谢你,也谢谢其他各位朋友!
ice_berg16 2004-07-23
  • 打赏
  • 举报
回复
可以考虑不将帐户设成主键
这样允许不同月份的帐户共存,
只需要将ID字段设为自增主键即可

id account salary dateField
1 小张 1000 2004-06-10
2 小王 1200 2004-06-10
3 小张 1100 2004-07-10
4 小张 1002 2004-08-10
......................
查询2004年的员工工资发放情况
select * from salaryTable where YEAR(dateField) = '2004';
查询员工小张所有工资发放情况
select * from salaryTable where account = '小张';
xylegend 2004-07-23
  • 打赏
  • 举报
回复
to huayuliang(dreamcat)
楼上的朋友:我再次强调一下,他们原本用的数据库并不是mysql啊!!!
他们只是会用win*的!!!但是他们用的数据库可以导出txt文本数据!!

现在的做法是:将该文本数据导入到mysql数据库!!!
这一点都好实现,至少我个人是能够实现。
问题就在于每个月的工资都要导入,这样的话后面的信息必然面临无法追加的情况。。。(比如:数据表里边已经存在6月份的工资信息的话,那么7月份的工资就无法追加进去了,明白么?),但是如果我把每个月的工资单独成表的话,又面临查询的困难……

现在的想法是如果每个月的工资都单独成一个数据表的话,那么要查询一个人最近几个月的工资变化情况的话,就要同时搜索这几个月的信息然后取出来。。。
但是这样子的话,现在(7月份)要查过去几个月还好。要是到了8月、9、10……以后的月份
该怎么查询呢???难道先将这些空表(8月以后的表)建立起来,同时也做查询???
哈啤猫 2004-07-23
  • 打赏
  • 举报
回复
。。。。。。。。
你导出的应该是csv文件,建议你用phpmyadmin导入,或者自己写一个脚本就是了。
xylegend 2004-07-23
  • 打赏
  • 举报
回复
最终我还是选择了:读取文件,切字符串然后生成sql插入数据库的方法
虽然已经实现,但是依然面临不能追加的问题!!
真是急刹人了,因为工资表无论是那个月,帐户总是相同(每个人一个帐户,这是主键),正是如此,后面的工资数据无法追加。。。。
如果工资表按照每个月一张表的做法的话,又是面临查询困难的问题!
因为按照要求,当职工或者管理员查询某个人的各个月份的工资的时候,表的选择就是个很大的问题了!!!
比如现在是7月,现在写好的程序查询包括7月以内的工资当然很容易查询,,可是8月的还没有放上去啊。。到了哪个时候,8月份又是另外一个表的话,查询就面临大麻烦了……

郁闷透了,欢迎大家继续讨论,谢谢!
我会按照情况,继续加分的
tod204 2004-07-22
  • 打赏
  • 举报
回复
学习中...
我以前是用file()或者fopen()函数打开.
然后用分割符号分割,接着插入数据库.
xylegend 2004-07-22
  • 打赏
  • 举报
回复
是啊,如果数据表里边的记录有跟文本里边的记录相同的话,后面的就插入将完全停止的
工资表嘛,总是有某个人的记录可能上个月和今个月完全一样的时候了……
ice_berg16 2004-07-22
  • 打赏
  • 举报
回复
不太明白,load data怎么会不能追加数据
ice_berg16 2004-07-22
  • 打赏
  • 举报
回复
你不是要导入到MYSQL里的吗?
那有什么问题?
xylegend 2004-07-22
  • 打赏
  • 举报
回复
to ice_berg16(寻梦的稻草人)

对方的要求是必须能实现这样的功能:不单是查询到某个人当月的工资,还要能看到前几个月的工资信息。这样的话,工资数据表就不能按照月份每个月一个表,否则查询下个月的工资信息就会很大的麻烦了!!

但是我以前load data的时候发现是不能追加数据的,mysqlimport则可以,但偏偏不能远程操作……
还有的就是既然表不能按照月份每个月一个表,那就意味着每个月传上去的文本,导完后都要删除,这个删除权限恐怕就很麻烦了。。。毕竟服务器是网络分局专管的,他们才是整个单位网络的管理员。
xylegend 2004-07-21
  • 打赏
  • 举报
回复
上面有些朋友不了解:其实他们原本用的工资系统数据库(单机版)当然不会是mysql,不然还要导出导入干什么?但是该系统可以导出文本数据。。。
xylegend 2004-07-21
  • 打赏
  • 举报
回复
楼上的大哥:你那个查询可以执行么?现在我无法测试……
如果可行的话还是可以试试的
如果传到服务器的话,还有传上去以后可能就没有删除文本的权限了。。
ice_berg16 2004-07-21
  • 打赏
  • 举报
回复
为什么要生成SQL语句?
既然文件格式以制表符分开,回车换行,可以用MYSQL的语句导入
如果服务器在远程,可以以WEB界面的形式提供给用户,让用户选择文本文件上传到服务器
然后服务器使用PHP来导入
mysql_query("load data infile 'test.txt' into table yourtblname");
加载更多回复(10)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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