2016-10-27 4 views
0

1.Iは、2つの(すなわちdatabase_1mとdatabase_current)データベースperlを使って別のデータベースにテーブルを挿入するには?

2.Iは.Iはdatabase_currentで同じテーブルを挿入する(すなわち中database_1m)include_statusテーブルの一部の列が挿入されているがあります。

3.各データベースにはdatabase_1mの時間フィールドがあります。私はすべてのタイミングを取得しますが、2番目のデータベースには最近の時刻行しか必要としませんので、mysqlクエリを使用して最近更新された時刻を取得しますtime =(include_statusからmax(timeを選択してください);)

4.ここでは、同じサブルーチンで両方のデータベースをperlを使ってどのように使用するのでしょうか? コード:

sub data 
{ 

    $DBH = &connect or die "Cannot connect to the sql server \n"; 
    $DBH->do("USE database_1m;"); 
    $stmt = "INSERT INTO include_status(time,available,closed,used,busy,reserved,down) VALUES(\"$current_time\",\"$include{'D'}\",\"$include{'B'}\",\"$include{'A'}\",\"$include{'C'}\",\"$include{'R'}\",\"$include{'+'}\")"; 


      my $sth = $DBH->prepare($stmt); 
      $sth->execute() or print "Could not insert data"; 
    $sth->finish; 
    $DBH->disconnect(); 




} 

MySQLのクエリ:

select * from include_status where time=(select max(time) from include_status); 
+0

私は少し混乱しています。別のデータベースにテーブルを挿入するか、同じデータベース上の別のテーブルに行を挿入しますか?私はあなたが "database_currentにdatabase_1mから同じテーブルを挿入したい"と言いますが、include_statusがテーブル名であることを示す 'INSERT INTO include_status'を表示していますか? –

+0

同じテーブルを別のデータベース(つまりdatabse_Current)に挿入したいのですが、2番目のデータベースに最近の更新された時間の行のみが含まれている必要があります@ user2082599 –

+0

テーブルが存在しない場合はテーブルを作成し、他のテーブルから選択する。 DBH接続はまったく同じですが、dbhが既に定義されているので、接続名としてdbh2を追加するだけです。 –

答えて

0

は、インサートは、このようなものになります(最近更新された行を挿入する):

my $stmt = "INSERT 
      INTO destination_table(time,available,closed,used,busy,reserved,down) 
      SELECT time,available,closed,used,busy,reserved,down from original_table"; 
1

は、あなたが "INSERT ... INTO ... SELECT ..." たい選択クエリを実行して結果を別のテーブルに直接挿入することができます。 2つのテーブルが同じサーバー上の異なるデータベースにある場合は、1つのステートメントで直接行うことができます。以下のような何か:

INSERT 
INTO database_current.insert_status 
SELECT * 
FROM database_1m.insert_status 
WHERE [some where clause] 

そして私はちょうど私がlast time this code was postedを作ったいくつかのポイントを繰り返すでしょう。

  1. &を使用してサブルーチンを呼び出しないでください。それはある時点であなたを混乱させます。代わりにconnect()を使用してください。
  2. $DBHを私に宣言していないという事実は、あなたのコードにuse strictがあるかどうか疑問に思う。 use strictuse warningsを常に含める必要があります。
関連する問題