zoukankan      html  css  js  c++  java
  • EVE Online Third Party Development

     第一部分:price_history表

    # 建表语句
    
    CREATE TABLE IF NOT EXISTS `price_history` (
      `regionID`  INT    NOT NULL,
      `typeID`    INT    NOT NULL,
      `date`      DATE   NOT NULL,
      `lowPrice`  DOUBLE NOT NULL,
      `highPrice` DOUBLE NOT NULL,
      `avgPrice`  DOUBLE NOT NULL,
      `volume`    INT    NOT NULL,
      `orders`    INT    NOT NULL
      COMMENT 'regionID,typeID,date,lowPrice,highPrice,avgPrice,volume,orders',
      INDEX `regionID`(`regionID`),
      INDEX `typeID`(`typeID`),
      INDEX `date`(`date`),
      INDEX `lowPrice`(`lowPrice`),
      INDEX `highPrice`(`highPrice`),
      INDEX `avgPrice`(`avgPrice`),
      INDEX `volume`(`volume`),
      INDEX `orders`(`orders`)
    )
      ENGINE = InnoDB
      DEFAULT CHARSET = UTF8MB4;

     考虑到price字段使用FLOAT/DOUBLE类型会有精度问题(FLOAT 4个字节,有效数字6位;DOUBLE 8个字节,有效数字16位。)

    # 优化以后的建表语句,关于DECIMAL请参见 https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
    
    CREATE TABLE IF NOT EXISTS `price_history` (
      `regionID`  INT            NOT NULL,
      `typeID`    INT            NOT NULL,
      `date`      DATE           NOT NULL,
      `lowPrice`  DECIMAL(17, 4) NOT NULL,
      `highPrice` DECIMAL(17, 4) NOT NULL,
      `avgPrice`  DECIMAL(17, 4) NOT NULL
      COMMENT 'The max(highPrice) is 700,000,000,000',
      `volume`    INT            NOT NULL,
      `orders`    INT            NOT NULL
      COMMENT 'regionID,typeID,date,lowPrice,highPrice,avgPrice,volume,orders',
      INDEX `regionID`(`regionID`),
      INDEX `typeID`(`typeID`),
      INDEX `date`(`date`),
      INDEX `lowPrice`(`lowPrice`),
      INDEX `highPrice`(`highPrice`),
      INDEX `avgPrice`(`avgPrice`),
      INDEX `volume`(`volume`),
      INDEX `orders`(`orders`)
    )
      ENGINE = InnoDB
      DEFAULT CHARSET = UTF8MB4;

     接下来进行数据的导入,表空间占用累计为70223M。

    # 数据导入
    LOAD DATA LOCAL INFILE '/root/priceHistory.txt' INTO TABLE price_history FIELDS TERMINATED BY ',' LINES TERMINATED BY '
    ';
    
    MySQL [eveonline_price]> LOAD DATA LOCAL INFILE '/root/priceHistory.txt' INTO TABLE price_history FIELDS TERMINATED BY ',' LINES TERMINATED BY '
    ';
    Query OK, 269257439 rows affected, 14686 warnings (5 hours 25 min 41.31 sec)
    Records: 269257439  Deleted: 0  Skipped: 0  Warnings: 14686

     第二部分:typeid表

    首先,从网上下载比较新的typeID文件,然后进行适当的处理:首先去掉第一和第二行,然后将空格分割的文件进行处理,以逗号进行分割。

    # 下载下来的文件保存为download.txt,处理后文件保存为typeID.txt
    with open('typeID.txt', mode='w', encoding="UTF-8") as out:
        
        for line in  open('download.txt', mode='r', encoding="UTF-8"):
        
            line = re.sub(r's+', ' ', line).split()
            key= line[0]
            name = ' '.join(line[1:])  
            
            out.write(key + ',' + name + "
    ")

    建立typeid表

    # MySQL数据库字段支持大小写,但是底层一律转换成小写(typeID和typeid是同一字段)
    
    CREATE TABLE IF NOT EXISTS `typeid` (
      `typeID`   MEDIUMINT PRIMARY KEY,
      `typeName` VARCHAR(90) NOT NULL,
      INDEX `typeName`(`typeName`)
    )
      ENGINE = InnoDB
      DEFAULT CHARACTER SET = UTF8MB4;

    经过对文件的读取判断,typeName字段最长为78个字符,这里留90字符作为保留量。接下来进行数据的导入,

    LOAD DATA LOCAL INFILE '/root/typeID.txt' INTO TABLE typeid FIELDS TERMINATED BY ',' LINES TERMINATED BY '
    ';

    Importing market data into Excel,如何将市场数据导入Excel

    USING ESI WITH GOOGLE SHEETS,将ESI和Google Sheets配合使用

    Marketplace,CCP官方论坛交易市场

    EVE Online Intelligence Data,Tools and data you need to succeed in EVE Online

    EVE Trade,暂时不知道做什么用

    EVE Online price history download link,大小 

    Development Blog,开发者日志

    MySQL部分知识:

  • 相关阅读:
    旧文备份:CANopen协议PDO的几种传输方式
    CANopen 基础
    单片机FLASH与RAM、ROM的关系
    在CANopen网络中通过LSS服务设置节点地址和网络波特率
    STM32F103 CAN中断发送功能的再次讨论
    由RS-232串口到PROFIBUS-DP总线的转换接口设计
    profibus 的DPV0 和DPV1
    PROFIBUS-DP
    profibus总线和profibus dp的区别
    获取验证码倒计时
  • 原文地址:https://www.cnblogs.com/echo1937/p/8867384.html
Copyright © 2011-2022 走看看