问一个shell sqlite3的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
Mishell
帖子: 17
注册时间: 2011-09-16 10:39

问一个shell sqlite3的问题

#1

帖子 Mishell » 2011-09-16 10:46

货币名称 现汇买入价 现钞买入价 卖出价 基准价 中行折算价 发布日期 发布时间
欧元 916.78 888.48 924.15 921.22 921.22 2011-09-01 00:00:05
欧元 908.82 880.76 916.12 917.33 917.33 2011-09-02 00:00:04
欧元 905.28 877.33 912.55 912.31 912.31 2011-09-03 00:00:04
欧元 902.9 875.02 910.15 912.31 912.31 2011-09-04 00:00:03
欧元 902.9 875.02 910.15 912.31 912.31 2011-09-05 00:00:02
欧元 899.88 872.1 907.11 904.46 904.46 2011-09-06 00:00:02
欧元 902.46 874.6 909.71 899.72 899.72 2011-09-07 00:00:01
欧元 894.7 867.08 901.89 896.99 896.99 2011-09-08 00:00:00
欧元 894.86 867.23 902.05 898.82 898.82 2011-09-09 00:00:09
欧元 869.04 842.21 876.02 889.86 889.86 2011-09-10 03:03:18
欧元 869.04 842.21 876.02 889.86 889.86 2011-09-11 00:00:08
欧元 869.04 842.21 876.02 889.86 889.86 2011-09-12 00:00:07
欧元 865.61 838.88 872.56 889.86 889.86 2011-09-13 02:53:52
欧元 866.77 840.01 873.74 872.52 872.52 2011-09-14 00:00:05
欧元 870.77 843.89 877.77 875.85 875.85 2011-09-15 00:00:04
欧元 877.71 850.61 884.76 877.65 877.65 2011-09-16 00:00:09
以上是我用shell自动从银行的相关页面抓取的数据并存为rate.txt文本

现在我想将这些数据存入sqlite中,并且发布日期存为时间戳方式,发布时间则丢弃,默认为00:00:00

请问,shell该如何处理

sqlite3数据库格式想这样格式的

代码: 全选

sqlite> select * from rate;
Id|Currency|Buyrate|Cashpurchaseprice|Sellingprice|Baseprice|Sellingrate|Date
1|欧元|916.68|888.48|924.15|921.22|921.22|1314806400
2|欧元|908.82|880.76|916.12|917.33|917.33|1314892800
3|欧元|905.28|877.33|912.55|912.31|912.31|1314979200
4|欧元|902.9|875.02|910.15|912.31|912.31|1315065600
5|欧元|902.9|875.02|910.15|912.31|912.31|1315152000
6|欧元|899.88|872.1|907.11|904.46|904.46|1315238400
7|欧元|902.46|874.6|909.71|899.72|899.72|1315324800
8|欧元|894.7|867.08|901.89|896.99|896.99|1315411200
9|欧元|894.86|867.23|902.05|898.82|898.82|1315497600
10|欧元|869.04|842.21|876.02|889.86|889.86|1315584000
11|欧元|869.04|842.21|876.02|889.86|889.86|1315670400
12|欧元|869.04|842.21|876.02|889.86|889.86|1315756800
13|欧元|865.61|838.88|872.56|889.86|889.86|1315843200
14|欧元|866.77|840.01|873.74|872.52|872.52|1315929600
15|欧元|870.77|843.89|877.77|875.85|875.85|1316016000
16|欧元|877.71|850.61|884.76|877.65|877.65|1316102400
谢谢
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 问一个shell sqlite3的问题

#2

帖子 eexpress » 2011-09-16 12:48

.import FILE TABLE Import data from FILE into TABLE

以前导入过。只是找不到了记录了。你看下man
● 鸣学
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 问一个shell sqlite3的问题

#3

帖子 fnan » 2011-09-18 21:18

脚本中可以用heredocument,如:
sqlite3 欧元.db <<eof
> create table [rate]([Id] integer not null primary key,[Currency] varchar(3) not null,[Buyrate] float not null);
> eof
Currency='欧元';Buyrate='916.68';sqlite3 欧元.db <<eof
> insert into [rate]([Currency],[Buyrate])values("$Currency","$Buyrate");
> eof
sqlite3 欧元.db <<eof
select * from rate;
eof
1|欧元|916.68
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
Mishell
帖子: 17
注册时间: 2011-09-16 10:39

Re: 问一个shell sqlite3的问题

#4

帖子 Mishell » 2011-09-20 13:48

fnan 写了:脚本中可以用heredocument,如:
sqlite3 欧元.db <<eof
> create table [rate]([Id] integer not null primary key,[Currency] varchar(3) not null,[Buyrate] float not null);
> eof
Currency='欧元';Buyrate='916.68';sqlite3 欧元.db <<eof
> insert into [rate]([Currency],[Buyrate])values("$Currency","$Buyrate");
> eof
sqlite3 欧元.db <<eof
select * from rate;
eof
1|欧元|916.68
非常感谢,虽然已解决了,方法与你一样...
时间我用的sed,然后date转换到时间戳,再insert到rate表的
fnan
帖子: 919
注册时间: 2009-07-01 22:04

Re: 问一个shell sqlite3的问题

#5

帖子 fnan » 2011-09-20 21:04

看看lz的帖子就知道能自己解决,标准数据已经做好了。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
回复