SQL Serverの文字列をエスケープする
code:sql
INSERT INTO TEST_TABLE (name) VALUES ('B'z'); -- これはダメ
INSERT INTO TEST_TABLE (name) VALUES ('B''z');
こういうフローの場合は、どこでエスケープ処理を入れるべき?https://gyazo.com/032604338f9a3f44ec0d171974ad065b
1. Excelなどでデータを受領する
2. データを加工する
INSERTするスクリプト(.sql)を組む
3. コマンドプロンプトなどからスクリプトを実行する
100件程度を想定
このスクリプトは1回しか実行しないので、再利用性などは考慮しない code:mmd
flowchart LR
subgraph 依頼者
end
e1 -- データ修正依頼 --> e2
subgraph 作業者
e2Excel -- データ加工 --> Script end
subgraph サーバー
end
Script -- insertなど --> db
シングルクォーテーションが存在する可能性があるデータの場合、2. でデータを加工する時にシングルクォーテーションを置換するようにしてみた。
SQL Serverが提供している仕組みを使えば3. の部分でもできそうな気がする
履歴
まったく同じことが起こり、同じ思考をした(2022/10/27)