Julia: SQLite库升级后的操作

随着Julia0.4版本的升级,SQLite库也有不小的变化。特别是引入了DataStreams,CSV等库在其中。在一些接口用法上有一些改变。
1、返回类型是Data.Table

julia> a =[1 2]
1x2 Array{Int64,2}:
 1  2
julia> b =[1 2;3 4]
2x2 Array{Int64,2}:
 1  2
 3  4
julia> using DataStreams.Data
julia> Data.Table(a)
Data.Table:
1x2 Data.Schema:
 Column1, Column2
   Int64,   Int64
NullableArrays.NullableArray{T,1}[NullableArrays.NullableArray{Int64,1}[1],Nulla
bleArrays.NullableArray{Int64,1}[2]]
julia> Data.Table(b)
Data.Table:
2x2 Data.Schema:
 Column1, Column2
   Int64,   Int64
NullableArrays.NullableArray{T,1}[NullableArrays.NullableArray{Int64,1}[1,3],Nul
lableArrays.NullableArray{Int64,1}[2,4]]

2、SQLite 的一些基本操作

(1)建表

julia> using SQLite

julia> DBPath   = "E:\\sqlite\\test.db" 
"E:\\sqlite\\test.db"
julia> db = SQLite.DB(DBPath)
julia>       strSQL1=" CREATE TABLE ";
julia>       strSQL2="  (
                             Code  CHAR NOT NULL,
                             TradeDay  INT NOT NULL,
                             TradeTime INT NOT NULL,
                             Open Decimal NOT NULL,
                             High Decimal NOT NULL,
                             Low Decimal NOT NULL,
                             Close Decimal NOT NULL,
                             Volume Decimal NOT NULL,
                             Amount Decimal NOT NULL,
                             OpenInterest Decimal NOT NULL
                             ) ";

julia>        strSQL= string(strSQL1," SH600036 ",strSQL2);
julia>        SQLite.query(db,strSQL);

(2)INSERT
这部分很奇怪的,和原来不一样。

julia> val =Any(["600036" ,20150606 ,0931 ,10.6, 11.6 ,11.2 ,12.6 ,123666.0 ,125 ,445.6, 124])
11-element Array{Any,1}:
         "600036"
 20150606
      931
       10.6
       11.6
       11.2
       12.6
   123666.0
      125
      445.6
      124

julia> SQLite.query(db,"Insert into SH600036 Values (?1,?2,?3,?4,?5,?6,?7,?8,?9,
?10)",val);

注意1: 如果 val格式是 Array{Any,2},比如

val =Any(["600036"  20150606  0931  10.6 11.6  11.2  12.6  123666.0 125  445.6 124])

在INSERT时是会发生报错的

注意:

binddb = SQLite.DB()
SQLite.query(binddb, "CREATE TABLE temp2 (n NULL, i6 INT, f REAL, s TEXT)")
val1 =Any[SQLite.NULL, convert(Int64,6), 6.4, "some text"]
val2 =Any[SQLite.NULL, convert(Int64,8), 6.5, "hhhh text"]
val =[value1 value2] 

可以INSERT val1 or val2, 因为是Array{Any,1}类型

SQLite.query(binddb, "INSERT INTO temp2 VALUES (?1, ?2, ?3, ?4)", val2)

但是不能INSERT val , 因为是Arry{Any ,2} 类型. 会报错!

SQLite.query(binddb, "INSERT INTO temp2 VALUES (?1, ?2, ?3, ?4)", val)

对于Array{Any,2}的INSERT ,除一条条INSERT外,或只有变通了。目前正在寻找更好的办法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值