0

過去数日間でSQLの学習を開始しましたが、データをテーブルに取り込もうとして立ち往生しています。

データは次の形式でテキストファイルに保存されます。

ColumnName1=SomeInteger
ColumnName2=SomeInteger
ColumnName3=SomeString
... etc

=SomeValueこれまでのところ、Pythonでを削除することで、テーブル(約150列あり、詳細がわかったら分割してグループ化することを望んでいます)を作成することができました。CREATE TABLE次に、列名をスプレッドシートでラップします。少し面倒ですが、今のところは機能します。

今、私は次の点で立ち往生しています:

LOAD DATA INFILE 'path/to/file.txt'
INTO TABLE tableName
COLUMNS TERMINATED BY '\n'
LINES STARTING BY '=';

SQLで指定された列名にデータを挿入し(常に同じ順序であるとは限らない場合)、等号を無視し、一意のファイル名をインデックスとして使用しようとしています。'\='また、MySQLのドキュメントには、LINES STARTING BYパラメータの前のすべてを無視する必要があると記載されているため、equals文字をでエスケープしようとしました。入力はなんとかLINES STARTING BY 'ColumnName1='最初のインスタンスを無視しますが、それは私が望むものではなく、残りの行では機能しません。

誰かが私を正しい方向に向けることができれば、私はもっと多くのドキュメントやチュートリアルを読むことを嫌がりません。

編集:行は次のように区切られます:約100,000個のiniファイルが与えられました。それぞれにFirstName_LastName.ini(一意性が保証されています)という名前が付けられ、データの各行はiniファイルに含まれています。21世紀にアカウントストレージの古風な方法を導入する必要があります。MySQLのLOADDATAは、このタイプのタスクでは特に高速であると噂されているため、オプションとして調査を開始しました。自分の形式のデータを処理するためにそれを操作できるかどうか、または10万個のファイルすべてをパーサーに通したほうがよいかどうか疑問に思っていました。これを読んでいるマジシャンがいれば、SQLを使用する提案をまだ受け入れています。

ps:私のデータ(このテキスト形式から)を個々のテーブルに取り込む方法について誰かがより良いアイデアを持っているなら、私もそれらを聞いてみたいです。

4

1 に答える 1

0

個人的には、MySQLdb モジュール (おそらく、お気に入りのディストリビューションの python-mysqldb や MySQL-python などの名前のパッケージで利用可能) を使用して、Python ですべてを行うでしょう。データをタプルのリストにフォーマットしてから挿入します。http://mysql-python.sourceforge.net/MySQLdb.htmlの例:

import MySQLdb

datalist = [("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95 ),
            ("Not So Much Spam Plate", 3, 2, 0, 3.95 ),
            ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95 )]

db = MySQLdb.connect(user='dude', passwd='foo', db='mydatabase')
c = db.cursor()

c.executemany(
    """INSERT INTO breakfast (name, spam, eggs, sausage, price)
    VALUES (%s, %s, %s, %s, %s)""",
    datalist)
于 2009-08-06T02:30:28.040 に答える