1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MicroAd (マイクロアド)Advent Calendar 2024

Day 20

MacOSのターミナルでMySQLのクエリをコピペで一気に大量に流したい

Last updated at Posted at 2024-12-19

やりたいこと

作業手順に従ってSQLを更新する場合などに、大量のSQL文をコピペで一気に流したいことがあります。

update xxx set yyy = 'zzzzz1' where id = 1;
update xxx set yyy = 'zzzzz2' where id = 2;
update xxx set yyy = 'zzzzz3' where id = 3;
update xxx set yyy = 'zzzzz4' where id = 4;
update xxx set yyy = 'zzzzz5' where id = 5;
...

問題

しかし、そのままコピペしてMacOSのターミナルからMySQLのコマンドラインで流そうとすると、SQLの実行とペーストが連続で実行されるのが原因なのか、実行途中で以下のようにペーストが意図通り実行されずSyntax Errorになってしまうことがあります。(数が多くなると発生しやすくなります)

...
mysql> update xxx set yyy = 'zzz
    '> 
    '> update xxx set yyy = 'zzzzz5' where id = 
    '> 
...
ERROR 1064 (42000): You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'zzz'

思いつく対処法としては、

  • (insert文の場合)value ではなく values を使って1クエリにする
  • コピペを細切れにして実行する
  • クエリを記載したファイルを作成し、読み込ませて実行する

などの方法がありますが、いずれもコピペに比べると少し面倒です。

解決方法

ペースト途中でSQLが実行開始されてしまうことが原因であるため、改行を取り除いて1行の状態にしてコピペすることで解決しました。この程度の作業であればテキストエディタで簡単にできます。

update xxx set yyy = 'zzzzz1' where id = 1;update xxx set yyy = 'zzzzz2' where id = 2;update xxx set yyy = 'zzzzz3' where id = 3;update xxx set yyy = 'zzzzz4' where id = 4;update xxx set yyy = 'zzzzz5' where id = 5;...

おわりに

ニッチな状況だとは思いますが、どなたかの役に立てば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?