現在、作成したいプログラムがあるのですが、要件が複雑でして方法が分からず質問させて頂きました。
手元にSQLファイルがあるのですが、こちらのSQLファイルから「AUTO_INCREMENT
」と記載されている箇所があった場合、その箇所を削除し、テーブルごとに新しくSQLファイルを作成するといったことを実現したいです
元のSQLファイル(stage.sql
)は以下になります。
※こちら省略しているのですが、行数的には凡そ10万行程あります
-- -- テーブルの構造 `client_db_test_1050` -- CREATE TABLE IF NOT EXISTS `client_db_test_1050` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '番号', `relation_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'testID', ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='test1' AUTO_INCREMENT=1020 ; -- -- テーブルの構造 `client_db_test_2010` -- CREATE TABLE IF NOT EXISTS `client_db_test_2010` ( `id` int NOT NULL COMMENT '番号', `relation_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'testID', ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='test2';
こちらのテーブルからCREATE TABLE
文を抜き出して、client_db_test_1050.sql
ファイルやclient_db_test_2010.sql
ファイルを作成していくといったプログラムを作成したいと考えております。
抜き出した後のclient_db_test_1050.sql
ファイルなどは以下のようにしたいです。
CREATE TABLE IF NOT EXISTS `client_db_test_1050` ( `id` int NOT NULL COMMENT '番号', `relation_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'testID', ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='test1';
現状の実装途中のプログラムは以下になりますが、そもそもまずどこから手をつけて良いのかがわからない状況に陥ってしまっています。
どなたか、ご助言頂けましたら幸いです
path = './stage.sql' file_name = "client_db_test_1050.sql" with open(path) as f: print(f.read()) data_lines = f.read() data_lines = data_lines.replace("AUTO_INCREMENT", "") with open(file_name, mode="w",) as f: f.write(data_lines)
※使用OSはMacOS Catalinaです。
回答1件
あなたの回答
tips
プレビュー