mysqlで一度に複数の類似レコードを挿入する方法は?

mysqlで一度に複数の類似レコードを挿入する方法は?

次のクエリを使用して一度に複数のレコードを挿入できることを知っています。

INSERT INTO `TABLE1` (`First`,`Last`) VALUES ('name1','surname1'),
('name2','surname2'),
('name3','surname3'),
('name4','surname4');

しかし、上記のような1000レコードを追加するには、(name*,surname*)すべてのレコードを書き込む必要がありますか?それともワイルドカードなどを使用できますか?それともmysql(phpmyadmin)を使用する他のソリューションがありますか?

答え1

いいえ。次の種類の挿入のみを実行できます。

INSERT INTO table (artist, album, track, length) 
VALUES 
("$artist", "$album", "$track1", "$length1"), 
("$artist", "$album", "$track2", "$length2"),
("$artist", "$album", "$track3", "$length3"), 
("$artist", "$album", "$track4", "$length4"),
("$artist", "$album", "$track5", "$length5");

ただし、必要な正規表現を使用して上記の内容を生成するスクリプトをいつでも作成できます。その後、スクリプトは正規表現を上記の適切な項目に拡張してINSERT ...実行する責任があります。

正規表現演算子

事前にスキーマを生成したり、VALUES使用したコマンドコンテンツの一部として生成したりできますREGEXP

次のセクションで複数回使用できますWHERE

SELECT col1, col2, ..., coln
FROM products
WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$'

MySQL Webサイトでこの演算子の詳細を読むことができます。正規表現文書しかし、このように使われることを見たことがなく、自分で使ってみるつもりはありませんでした。このSO Q&Aで言及されたコマンドを見つけました。MySQLで使用する正規表現の調整

引用する

答え2

他の答えからわかるようにできませんが、PHP + PDOを使用して準備された声明、マシンを作成するときは、さまざまなパラメーターを使用してステートメントを再利用できます。隠れ家あなたの声明は全体のプロセスを最適化します。言うまでもなく、スケーピングなどのタスクを処理します。コードは次のとおりです(PHP)。

$DBH = new PDO("mysql:dbname=pdo;host=localhost", "username", "password" );
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$STMT = $DBH->prepare("INSERT INTO `table` (`col1`, `col2`) VALUES (?,?)");

// Let's say $array is an array of 1000+ different elements
foreach ($array as $value) {
    $STMT->bindParam(1, $value); // You just need to bind the params and execute
    $STMT->bindParam(2, $value); // the statement for every record.
    $STMT->execute();
}

$DBH = NULL;

また、私はあなたが使用することをお勧めしますマネージャー、よりきれいなインターフェイスを持っており、メンテナンス/更新が簡単です(アプリケーション全体を含むPHPファイルのみ)。 phpmyadminが開発されなくなったことは言うまでもありません(Adminerはphpmyadminの現在で未来です)。

関連情報