ロゴ メインコンテンツへ
RSSフィード
「Web 開発」に関連する記事一覧

SQLiteデータベースをCSVに変換して、正規表現置換して元のデータベースに戻す

2018/11/22
(この記事の文字数: 645)

SQLite3 で正規表現で文字列置換したかったんですが、出来なそうだったので、あきらめて、一旦CSVファイルにエクスポートしてから、テキストエディタで正規表現文字列置換してから、SQLite3のデータベースファイルに戻すという方法で正規表現置換することにしました。

その時に作ったバッチを載せておきます。(記事の下の方に zip ファイルでバッチ自体も添付してあります)

以下がSQLite3のデータベースのテーブルの中身をCSVファイルに出力するバッチファイルです。

ExportToCsv.bat


@echo off

set INPUT_DB=%1
set TABLE_NAME=%2
set OUT_CSV=%~n1.csv
set TEMP_FILE=%~dp0tmp.query

rem 実行クエリのファイル出力
echo .headers on>%TEMP_FILE%
echo .mode csv>>%TEMP_FILE%
echo .output %OUT_CSV%>>%TEMP_FILE%
echo SELECT * FROM %TABLE_NAME%;>>%TEMP_FILE%
echo .quit>>%TEMP_FILE%

rem 実行
sqlite3.exe %INPUT_DB% < %TEMP_FILE%

del %TEMP_FILE%

例えば、以下のように第一引数にデータベースファイルであるmy_database.db、第二引数にテーブル名であるmy_tableを入力すると、my_database.csv に my_table の中身が出力されます。


ExportToCsv.bat my_database.db my_table

これで書き出したCSVファイルを正規表現置換ができるテキストエディタで読み込むなどして編集します。

以下は編集したCSVを元のデータベースファイルにインポートして戻すためのバッチファイルです。

ImportFromCsv.bat


@echo off

set INPUT_DB=%1
set TABLE_NAME=%2
set OUT_CSV=%~n1.csv
set TEMP_FILE=%~dp0tmp.query

rem 実行クエリのファイル出力
echo .headers on>%TEMP_FILE%
echo .mode csv>>%TEMP_FILE%
echo .output %OUT_CSV%>>%TEMP_FILE%
echo SELECT * FROM %TABLE_NAME%;>>%TEMP_FILE%
echo .quit>>%TEMP_FILE%

rem 実行
sqlite3.exe %INPUT_DB% < %TEMP_FILE%

del %TEMP_FILE%

例えば、以下のように第一引数にCSVファイルであるmy_database.csv、第二引数にインポート先のテーブル名である my_table を渡すと、my_database.db の my_table にmy_database.csvの中身が出力されます。


ImportFromCsv.bat my_database.csv my_table

sqlite3.exe 含めたバッチを zip にして貼っておきます。

Sqlite3CsvExportImport.zip


  このエントリーをはてなブックマークに追加  

<<「Web 開発」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.008 sec
Copyright(C)2006-2024 puarts All Rights Reserved