Problem 1 seems simple:

delete from TableX where timestamp < 41115
I think the table name may need to be produced by code.

RBS



On Sun, Sep 23, 2012 at 12:06 PM, Don Goyette <d...@donandcarla.com> wrote:
> Hello Everyone,
>
>
>
> I'm using what has become a huge (3.5 GB) SQLite3 database that was created
> by an investment (stocks) tracking program I use.  The program does not have
> a database purge function to delete old data, and it's no longer supported.
> So I'm trying to do this manually with SQL, via a Windows program called
> RazorSQL.
>
>
>
> The database contains 1,034 tables, one for each stock ticker being tracked.
> Each table contains up to 60,000 rows.  These tables store historical
> intraday stock prices at five minute intervals, so there are about 150 rows
> for each day that is stored.
>
>
>
> Some of the tables contain up to 388 days of data, but I only need 60 days.
> Thus, a LOT of data needs to be deleted from these tables and then the
> database needs to be compacted.
>
>
>
> The database file name is 'Don.db'
>
>
>
> The history tables are named '<ticker>_intraday'
>
>   where <ticker> is a stock ticker, such as 'EMC' or 'ORCL'
>
>
>
> The history table columns are...
>
>   timestamp REAL NOT NULL  (Primary Key)
>
>   open      REAL
>
>   high      REAL
>
>   low       REAL
>
>   close     REAL
>
>   volume    REAL
>
>
>
> The table of table names is 'Tnames' (created during run)
>
> The only column in Tnames is 'Tname' (names of all the intraday tables)
>
>
>
> The first problem I'm running into is that the timestamp in these tables is
> NOT a standard Unix timestamp.  Rather, it's an Excel timestamp, which is
> the number of Days since Jan 1, 1900.  An example is '41051.3958333334' (May
> 22, 2012), but the DELETE query will only use the integer portion.
>
>
>
> QUESTION #1: How do I convert this Excel timestamp value into a Unix
> timestamp value that SQLite understands and can work with?
>
>
>
> Next, I've managed to create a table of table names to be worked on (Tnames)
> and have gotten a DELETE query running for a single table, with the table
> name hard-coded into the query (ie. 'EMC_intraday').  But I've not been able
> to figure out how to accomplish the DELETE query for ALL of the history
> table names in Tnames.  And I've Googled until my hands and eyes are just
> plain sore.
>
>
>
> Here's what I'm trying to do...
>
>
>
> ========================================================
>
> -- Create a table of table names to work on (this works)...
>
>    CREATE TABLE Tnames (
>
>      Tname nvarchar(50) );
>
>
>
>    INSERT INTO Tnames  --(this works)
>
>      SELECT name
>
>        FROM sqlite_master
>
>          WHERE type='table' and name LIKE '%intraday';
>
>
>
> -- BEGIN processing all results
>
>
>
> -- Delete rows > 60 days old (this does not work)...
>
> -- Convert the Excel timestamp to a Unix timestamp...
>
>    -- Not sure how to do this
>
>
>
> -- DELETE FROM 'Don.db'||Tnames      does not work
>
> -- DELETE FROM Don.db.Tnames.Tname   does not work
>
> -- DELETE FROM Tnames.Tname          does not work
>
>
>
> -- What I want to do is...
>
>    DELETE FROM <tablename entry in Tnames table>
>
>      WHERE timestamp < 41109;   --(need to convert this)
>
>
>
> -- END processing all results
>
>
>
> -- Compact the database...
>
>    VACUUM
>
> ========================================================
>
>
>
> QUESTION #2: How do I code the DELETE query so it will use each of the Tname
> values in the Tnames table?
>
>
>
> Thank you all, in advance, for your assistance.  I appreciate your help very
> much.
>
>
>
> -Don
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to