0

SQL用の360クエリに作成する必要のある約360行のデータがあります。すべてのデータを個別に配置する代わりに、すべてのデータを1つのクエリにすばやく配置する方法はありますか。たとえば、ここでは3行のデータのみです。私は持っています:

   1,81,32
   1,101,82
   1,60,65

これらの3つが次のようになるように、このデータをクエリに変換する必要があります。

   INSERT INTO `Fixtures` (weeks, HomeID, AwayID) Values (1,81,32);
   INSERT INTO `Fixtures` (weeks, HomeID, AwayID) Values (1,101,82);
   INSERT INTO `Fixtures` (weeks, HomeID, AwayID) Values (2,60,65);

しかし、私はこれを360行持っているので、これらすべてをクエリの1 x 1にするのは難しいでしょう。これを行うためのより速い方法はありますか?

4

3 に答える 3

2

通常、INSERT...SELECT構文を使用できます。

この構文はdbによって異なりますが、多くの場合、次のようになります。

INSERT INTO `Fixtures` (weeks, HomeID, AwayID) 
select 1,81,32
union all select 3,31,22

別のバリエーションは次のとおりです。

INSERT INTO Fixtures
    (`weeks`, `HomeID`, `AwayID`)
VALUES
    (1, 81, 32),
    (3, 31, 22)
;
于 2012-11-01T14:38:03.643 に答える
1

これをPHPでタグ付けしたため、MySQLを想定していますが、ほとんどのデータベースでは1つのクエリに複数の挿入が許可されているため、クエリは次のようになります。

INSERT INTO `Fixtures` (weeks, HomeID, AwayID) Values (1,81,32), (1,101,82), (2,60,65);

または、手動ではなくコードを使用して挿入テキストを作成することを意味しましたか。その場合、データが現在どこにあるかを知る必要があります。

于 2012-11-01T14:39:54.147 に答える
1

ファイル内にある場合は、を使用してfile()、行ごとに区切ります。

$file = 'test.txt';

$lines = file($file); 

foreach ($lines as $line)
{
  // Can build an output of the inserts to use as an .sql file, or actually call the db to insert
  $output .= 'INSERT INTO Fixtures (weeks, HomeID, AwayID) Values (' . trim($line) . ')'; 
}
于 2012-11-01T14:40:16.183 に答える