Linux で txt を mysql にインポートする方法

Linux で txt を mysql にインポートする方法

序文

昨日、小さなプロジェクトを書いていたときに、txt ドキュメントのデータを mysql データベースにインポートするという要件に遭遇しました。最初は、Mysql Workbench を使用して TXT ファイルを直接インポートしたかったのですが、結局、TXT のインポートをサポートしていないことがわかりました。その結果、TXT を Excel に変換し、Linux にインポートすると、さまざまなコード文字化けの問題が見つかりました。

プログラマーにできないことはないという理念のもと、インポート用のファイルを直接操作する Python コードを書きました。結果として、10,000 件を超えるレコードを含むファイルが作成され、インポート時間は約 2 分です。

具体的なコードは次のとおりです。

  • mysqlpython.py ファイル: mysql データベースに接続するためのカスタム クラス
  • importtxt.pyファイル: TXTファイルを読み取り、挿入します
  • dict.txtファイル: 操作対象となるTXTファイル

mysqlpython.py ファイル

pymysql からのインポート *

クラスMysqlpython:
 def __init__(self,データベース,ホスト="localhost",
     ユーザー="root",パスワード="123456",
     文字セット="utf8",ポート=3306):
  self.database = データベース
  self.host = ホスト
  self.user = ユーザー
  self.password = パスワード
  self.charset = 文字セット
  self.port = ポート
  

 # データ接続とカーソルオブジェクトを作成する def open(self):
  self.db = connect(host=self.host,
     ユーザー=自己.ユーザー、
     パスワード=自分自身のパスワード、
     ポート=自己.ポート、
     データベース=self.database、
     文字セット = self.charset)
  self.cur = self.db.cursor()

 # カーソルオブジェクトとデータベース接続オブジェクトを閉じます def close(self):
  自己.cur.close()
  自己.db.close()

 # sqlコマンドを実行します def zhixing(self,sql,L=[]):
  自己オープン()

  自己.cur.execute(sql,L) を実行します。
  自己.db.コミット()

  自己.閉じる()

 # クエリ関数 def all(self,sql,L=[]):
  自己オープン()
  自己.cur.execute(sql,L) を実行します。
  結果 = self.cur.fetchall()
  結果を返す


__name__ == "__main__" の場合:
 sqlh = Mysqlpython("辞書") 
 sel = "ユーザーから*を選択"
 r = sqlh.all(選択)
 印刷(r)

importtxt.py ファイル

輸入再
インポートシステム
mysqlpythonからMysqlpythonをインポート
sqlh = Mysqlpython("辞書")

def insert(データ):
 arr = データ分割()
 名前 = arr[0]
 説明 = " ".join(arr[1:])
 ins = "単語(名前、説明) に値(%s、%s) を挿入"
 sqlh.zhixing(ins,[名前,説明])

get_addr() を定義します:
 f = 開く('./dict.txt')
 行 = f.readlines()
 行内の行の場合:
  挿入(行)
 f.close()
 戻る ''


__name__ == '__main__' の場合:
 印刷(get_addr())

dict.py ファイル (複数のファイルをコピーしました)

不確定な芸術
そろばん n. 平行棒に沿ってスライドするビーズが付いた枠。子供に数を教えたり、(一部の国では)数を数えるのに使われる。
放棄する、(人や物や場所から)立ち去る、戻るつもりがない、見捨てる、捨て去る
放棄、n. 放棄
abase v. ~ 自分自身/他人の尊厳を下げる; 自分自身/他人の品位を下げる;
恥ずかしめる、落ち着きや自信を破壊する:当惑させる
abashed adj. ~ 恥ずかしい; 恥じた
軽減する、少なくする
abattoir n. = 屠殺場(屠殺)

異なる区切り文字に一致するように正規表現を変更するだけです。すべてのコードはここに貼り付けられています。データベース構成をコピーして変更し、実行するだけです。

要約:

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Python で txt データを mysql にインポートする方法
  • Linux で SQL ファイルをインポートする方法 (コマンド ラインを使用して MySQL データベースを転送する)
  • Linux で MySQL データベースのインポートおよびエクスポート コマンドを実装する方法
  • Linux システムでの MySQL データベースのインポートとエクスポート
  • Linux VPS/サーバー上でMySQLデータベースを簡単にインポートおよびエクスポートするいくつかの方法

<<:  MySQLの自己接続と結合の詳細な理解

>>:  vue3.0 で要素を使用するための完全な手順

推薦する

JavaScript で最も高速なループはどれですか?

どの for ループまたは反復子がニーズに適しているかを知ることで、アプリケーションのパフォーマンス...

MySQLステートメントを監視する方法の詳細な説明

クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...

MySQLサブクエリの詳細な例

サブクエリの分類返された結果セットによる分類サブクエリは、返される結果セットの違いに応じて、テーブル...

MySQL 5.7 でパスワードを変更するときに発生する ERROR 1054 (42S22) の解決方法

MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...

MySql インデックス使用戦略の分析

MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...

CSS フロート(float, clear)の人気の解説と体験談

私はかなり昔に CSS に触れましたが、フローティングについてはいつも混乱していました。私の理解が浅...

Docker で nginx の https を設定する方法

https をサポートしていない Web サイトは、ブラウザによって徐々に安全でないとマークされるた...

MySQL InnoDB のトランザクション特性を確保するにはどうすればよいですか?

序文「データベース トランザクションの特徴は何ですか?」と尋ねられたら、 ACID 特性である原子性...

Vueオプションの詳細な説明

目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

MySQL 関数インデックス最適化ソリューション

MySQL を使用する場合、多くの開発者は一部の列に対して関数計算を実行することが多く、その結果、イ...

エラー 1862 (HY000): パスワードの有効期限が切れています。ログインするには、..... を使用してパスワードを変更する必要があります。

エラーメッセージ:エラー 1862 (HY000): パスワードの有効期限が切れています。ログインす...

QT が MYSQL データベースに接続するための詳細な手順

最初のステップは、対応するデータベースモジュール(sql)をプロジェクトファイル( .pro )に追...

a タグをクリックして入力ファイルのアップロードダイアログボックスを表示する方法

htmlコードをコピーコードは次のとおりです。 <SPAN class=tag><...

Dockerコンテナのホスト間通信におけるダイレクトルーティングの詳細な説明

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...