--- lang: ja-jp breaks: true --- # SQL Server mssql-scripter データのINSERT文を取得 python 2021-05-25 > microsoft/mssql-scripter > https://github.com/microsoft/mssql-scripter > Usage Guide > https://github.com/microsoft/mssql-scripter/blob/dev/doc/usage_guide.md ## mssql-scripter のインストール ```shell= pip install mssql-scripter ``` ## データのINSERT文を取得するバッチ ```shell= ECHO OFF setlocal call "%USERPROFILE%\anaconda3\Scripts\activate.bat" "%USERPROFILE%\anaconda3" set SERVER=localhost\instans_name set DATABASE=DataBaseName set USER=sa set PASSWORD=password set FILEPATH=INSERT cd /d %~dp0 echo %CD%\%FILEPATH%\ if exist "%CD%\%FILEPATH%\" ( del /F /Q "%CD%\%FILEPATH%\" ) cd /d %~dp0 call mssql-scripter -S %SERVER% -d %DATABASE% -U %USER% -P %PASSWORD% -f "%CD%\%FILEPATH%" ^ --file-per-object ^ --data-only ^ --include-objects ^ [table_name_1] ^ [table_name_2] ^ [table_name_3] pause ``` ## 生成されたSQLから、`USE ~` を除外したい場合 `--exclude-use-database`を付加する。 ```bat= call mssql-scripter -S %SERVER% -d %DATABASE% -U %USER% -P %PASSWORD% -f "%CD%\%FILEPATH%" ^ --file-per-object ^ --data-only ^ --exclude-use-database ^ --include-objects ^ [table_name_1] ^ [table_name_2] ^ [table_name_3] ``` ## 生成されたSQLから、`GO` を除外したい場合 ```bat= ・・・ call mssql-scripter -S %SERVER% -d %DATABASE% -U %USER% -P %PASSWORD% -f "%CD%\%FILEPATH%" ^ --file-per-object ^ --data-only ^ --include-objects ^ [table_name_1] ^ [table_name_2] ^ [table_name_3] call conda deactivate rem 比較しにくいので、GOを削除する call powershell -Command "Get-ChildItem -Path '%CD%\%FILEPATH%\' -Filter '*.sql' -Recurse | Foreach {[System.IO.File]::WriteAllText($_.FullName, [regex]::Replace([System.IO.File]::ReadAllText($_.fullname), '(?s)\r\nGO(?<CRLF>\r\n)','${CRLF}'))}" pause ``` :::info PowerShellで"GO"を削除する。 ::: :::warning 上記の例では、置換後にBOMがなくなる。 BOM付で出力したい場合は `([char]65279)` を追加するのようにする。 ```bat= call powershell -Command "Get-ChildItem -Path '%CD%\%FILEPATH%\' -Filter '*.sql' -Recurse | Foreach {[System.IO.File]::WriteAllText($_.FullName, ([char]65279) + [regex]::Replace([System.IO.File]::ReadAllText($_.FullName), '(?s)\r\nGO(?<CRLF>\r\n)','${CRLF}'))}" ``` ::: :::danger 上記の例では、単純に`GO\r\n`を削除しているので、データベーステーブル内に、この文言がある場合はこれも削除されてしまう。 ::: ###### tags: `SQL Server` `Python` `mssql-scripter` `行末` `^`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up