【问题标题】:working with mysql database使用 mysql 数据库
【发布时间】:2013-08-22 06:06:57
【问题描述】:

我正在编写一个 shell 脚本来从 mysql 数据库(实际上是数据库的一部分,从特定时间段到另一个时间段)获取表并将其放入 .csv 文件中。 这是我写的,我收到一个错误

mysql -u -p -B -e "use mytable;select * from table3;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > filename.csv

(mysql的多次查询)

(还请提示我如何从 mysql 表中提取特定时间段的数据,例如 1 月 23 日 16:05 到 1 月 30 日 17:05)

请注意 table3 来自一个 shell 变量 newtable 所以我必须在代码中使用 $newtable 而且我只能使用 shell

【问题讨论】:

  • 你遇到了什么错误?
  • 你想做什么?
  • 请编辑您的问题并复制/粘贴您遇到的确切错误。

标签: mysql bash shell csv


【解决方案1】:

如果可以用mysql查询成csv文件:

echo "SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' 以 ',' 结尾的字段可选地由 '"' 包围 以“\n”结尾的行 FROM $newtable;" | mysql -u -p -B mytable

更多信息:http://dev.mysql.com/doc/refman/5.1/en/select-into.html

【讨论】:

    【解决方案2】:

    在脚本中使用 newtable:

    newtable="table3"
    "mysql -u -p -B -e "use mytable;select * from $newtable;"
    

    对于查询部分,假设您使用的是“日期类型”列,名称为“期间”,那么查询将是:

    "Select * from table3 where MONTHNAME(period)='January';
    

    根据您的要求检查此最新更新:

     date="2010-08-11"
     start="10:09:09"
     end="21:50:59"
    
    "Select * from table3 where DATE(period)='$date' and TIME(period) between  
    '$start'and '$end'";
    

    【讨论】:

    • 大家好,错误已全部解决。赞。我仍然遇到的问题是我无法为某一天的特定时间段生成数据库。日期、开始时间和结束时间由 shell 变量返回,例如 date="2013-08-07" start="01:30:00" end="02:00:00" 那么我如何获取数据库在 $start 和 $end 之间的 $date 感谢
    • 什么是字段数据类型以及将日期/时间记录保存在表中的字段名称。
    • 日期为 IVALDATE 开始时间为 IVALSTART
    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 2012-09-15
    • 2015-01-13
    • 2016-11-20
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多