0

TBL1 と TBL2 の 2 つのテーブルがあります。

TBL1の2 つの列idがありますnSql。、、 の
TBL23 つの列があります。 TBL1 に ID 1 から 17 の 17 行があります。各 nSql には SQL クエリがあります。 datecustIduserId

たとえば、次の nSql

id == 1 は: "select date, pId as custId, tId as userId from TBL3"
id == 2 は: "select date, qId as custId, rId as userId from TBL4"...

nSql の結果は常に同じ 3 列です。

以下のクエリが実行され、テーブル TBL2 にデータが配置されます。その日のデータが TBL2 に既に存在する場合、クエリでデータを新しいデータに置き換えます。TBL2にデータが無ければ普通にデータを入れたい。

たとえば、朝にクエリを実行し、夕方にもう一度実行したい場合、その日の古いデータを新しいデータに置き換えたいとします。これは、データが毎日 TBL2 に挿入されるためです。

また、データが既に存在する場合 (同僚が実行している場合)、その日のデータを重複させたくないという注意事項もあります。

どうすればいいですか?

ありがとうございました。

(私はpythonが初めてです。誰かが手順を説明してコードに表示できるとありがたいです)

import MySQLdb

# Open connection
con = MySQLdb.Connection(host="localhost", user="root", passwd="root", db="test")

# create a cursor object 
cur = con.cursor()

selectStatement = ("select nSql from TBL1") 
cur.execute(selectStatement)
res = cur.fetchall()
for outerrow in res:
    nSql = outerrow[0]
    cur.execute(nSql)
    reslt = cur.fetchall()

    for row in reslt:
        date = row[0]
        custId = row[1]
        userId = row[2]
        insertStatement = ("insert into TBL2( date, custId, userId) values ('%s', %d, %d)" % (date, custId, userId))
        cur.execute(insertStatement)
        con.commit() 
4

1 に答える 1

0

datetimeテーブルに挿入されたすべてのデータに( を使用して) タイムスタンプを付けます。挿入する前に、datetime の日が今日であるテーブルから削除します。

MySQL の場合、関数to_days()を day とともに使用して、datetime の日付を取得できます: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_to-days

新しい行を挿入するときnow()に、現在の時刻に対応する日時の値を使用できます: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_now

于 2013-03-28T12:39:39.317 に答える