問題タブ [load-data-infile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL LOADDATA-ColumnName=Value形式のテキストファイルをロードする
過去数日間でSQLの学習を開始しましたが、データをテーブルに取り込もうとして立ち往生しています。
データは次の形式でテキストファイルに保存されます。
=SomeValue
これまでのところ、Pythonでを削除することで、テーブル(約150列あり、詳細がわかったら分割してグループ化することを望んでいます)を作成することができました。CREATE TABLE
次に、列名をスプレッドシートでラップします。少し面倒ですが、今のところは機能します。
今、私は次の点で立ち往生しています:
SQLで指定された列名にデータを挿入し(常に同じ順序であるとは限らない場合)、等号を無視し、一意のファイル名をインデックスとして使用しようとしています。'\='
また、MySQLのドキュメントには、LINES STARTING BY
パラメータの前のすべてを無視する必要があると記載されているため、equals文字をでエスケープしようとしました。入力はなんとかLINES STARTING BY 'ColumnName1='
最初のインスタンスを無視しますが、それは私が望むものではなく、残りの行では機能しません。
誰かが私を正しい方向に向けることができれば、私はもっと多くのドキュメントやチュートリアルを読むことを嫌がりません。
編集:行は次のように区切られます:約100,000個のiniファイルが与えられました。それぞれにFirstName_LastName.ini(一意性が保証されています)という名前が付けられ、データの各行はiniファイルに含まれています。21世紀にアカウントストレージの古風な方法を導入する必要があります。MySQLのLOADDATAは、このタイプのタスクでは特に高速であると噂されているため、オプションとして調査を開始しました。自分の形式のデータを処理するためにそれを操作できるかどうか、または10万個のファイルすべてをパーサーに通したほうがよいかどうか疑問に思っていました。これを読んでいるマジシャンがいれば、SQLを使用する提案をまだ受け入れています。
ps:私のデータ(このテキスト形式から)を個々のテーブルに取り込む方法について誰かがより良いアイデアを持っているなら、私もそれらを聞いてみたいです。
python - PythonでのMySQL LOAD DATA LOCAL INFILEの例?
Python から LOAD DATA LOCAL INFILE コマンドを実行するための構文定義、例、サンプル コード、wiki などを探しています。
利用可能であれば mysqlimport も使用できると思いますので、より良い方法に関するフィードバック (およびコード スニペット) を歓迎します。Google 検索で現在の情報があまり表示されない
どちらの場合も目標は同じです。既知の命名規則と日付構造を持つ何百ものファイルを単一の MySQL テーブルに自動的にロードすることです。
デビッド
python - MySQLのヘルプLOADDATAINFILE
次のようなCSVファイルをロードしたいと思います。
ただし、気付いた場合は、一部のフィールドが不完全です。MySQLは最初の列が欠落している行をスキップするだけだと思います。コマンドを実行すると:
そして、MySQLの出力は次のとおりです。
行数はわずか20,949ですが、MySQLは41,898行が影響を受けていると報告しています。なぜそうなのか?また、テーブルでは実際には何も変更されていません。また、生成された警告が何であるかを確認できませんでした。LOAD DATA INFILEを使用したかったのは、Pythonが各行を更新するのに0.5秒かかるため、20,000以上のレコードを持つファイルの場合は2.77時間に相当します。
更新:自動コミットを「False」に設定するようにコードを変更し、db.commit()ステートメントを追加しました。
mysql - スペース区切りのデータをMySQLにインポートする
私は次の形式のファイルを持っています:
でデータをインポートしようとしています
各行の最初の3つのフィールドのみを取得しているようです。ファイル形式を変更せずにデータをロードする方法はありますか?
sql - MySQL Latin1 データを UTF8 に変換する
LOAD DATA INFILE を使用して一部のデータを MySQL データベースにインポートしました。テーブル自体とカラムはUTF8文字セットを使用していますが、データベースのデフォルトの文字セットはlatin 1です。データベースのデフォルトの文字タイプはlatin1で、文字セットを指定せずにLOAD DATA INFILEを使用したため、解釈されましたファイル内のデータは UTF8 でしたが、ファイルは latin1 として表示されます。現在、UTF8 列に不適切にエンコードされたデータがたくさんあります。この記事を見つけました「cp1251に挿入されたUTF8」という同様の問題に対処しているようですが、私の問題は「UTF8に挿入されたLatin1」です。そこでクエリを編集して、latin1 データを UTF8 に変換しようとしましたが、うまくいきません。データは同じように出力されるか、以前よりもさらに複雑になります。例として、Québec という単語は Québec として表示されます。
[追加情報]
HEX() でラップされたデータを選択すると、Québec の値は 5175C383C2A9626563 になります。
このテーブルの Create Table (短縮) は、.
c# - C#を使用してXMLファイルをMySQLにロードする最速の方法は何ですか?
質問
大きな(> 1GB)XMLファイルをMySQLデータベースにダンプする最速の方法は何ですか?
データ
問題のデータは、StackOverflow Creative CommonsDataDumpです。
目的
これは、私が構築しているオフラインのStackOverflowビューアで使用されます。これは、インターネットにアクセスできない場所で学習/コーディングを行うことを検討しているためです。
プロジェクトが終了したときに、これを残りのStackOverflowメンバーシップにリリースして、自分で使用できるようにしたいと思います。
問題
もともと、私はXMLからの読み取り/DBへの書き込みを一度に1レコードずつ行っていました。これは私のマシンで実行するのに約10時間かかりました。私が使用しているハックタスティックコードは、500レコードを配列にスローし、挿入クエリを作成して500すべてを一度にロードします(例: " INSERT INTO posts VALUES (...), (...), (...) ... ;
")。これは高速ですが、実行にはまだ数時間かかります。明らかにこれは最善の方法ではないので、このサイトの頭脳がより良い方法を知ってくれることを願っています。
制約
- デスクトップアプリケーション(つまり、WinForms)としてC#を使用してアプリケーションを構築しています。
- データベースとしてMySQL5.1を使用しています。これは、「
LOAD XML INFILE filename.xml
」などの機能はMySQL 5.4以降でのみ使用できるため、このプロジェクトでは使用できないことを意味します。この制約は主に、プロジェクトが私以外の人々にも役立つことを望んでいるためであり、MySQLのベータ版を使用するように強制したくはありません。 - データロードをアプリケーションに組み込みたい(つまり、「このアプリケーションを実行する前に、「foo」を使用してMySQLにダンプをロードする」という指示はありません)。
- MySQL Connector / Netを使用しているので、
MySql.Data
名前空間内のすべてが受け入れられます。
あなたが提供できるどんなポインタにも感謝します!
これまでのアイデア
XMLファイル全体を列にロードし、XPathを使用して解析するストアドプロシージャ
- ファイルサイズは、デフォルトで1 MBに設定されているmax_allowed_packet変数の制限の対象となるため、これは機能しませんでした。これは、データダンプファイルのサイズをはるかに下回っています。
mysql - 一度に複数のエントリを MySQL データベースに挿入する方法
HTML ファイルの解析で見つかったすべての単語のヒストグラム/辞書を作成する必要があります。これには、見つかったすべての単語の辞書と、それらの頻度のヒストグラムが含まれます。
一度に挿入しなければならない単語が 2000 語になる可能性があるため、PHP/MySQL でこれを行う方法が思い浮かびません。
何か案は?
sql - LOADDATAINFILEからのMySQLエラーの検索
MySQLでLOADDATAINFILEコマンドを実行していますが、ファイルの1つでmysqlプロンプトにエラーが表示されています。
警告とエラーを確認するにはどうすればよいですか?今、私がしなければならない唯一のことは、プロンプトがインポート時に65,535の警告を報告するという事実です。
これらの警告が何であるかをmysqlに表示させるにはどうすればよいですか?エラーログを調べましたが、見つかりませんでした。「SHOWWARNINGS」コマンドを実行すると、64件の結果しか返されませんでした。つまり、残りの65,000件の警告は別の場所にある必要があります。
これらのエラーを見つけるにはどうすればよいですか?
mysql - MySQL LOAD DATA INFILE を非印刷文字区切り文字とともに使用する
フィールド区切り文字として SOH (ASCII 文字 1) を持ち、レコード区切り文字として STX (ASCII 文字 2) を持ついくつかのベンダー データがあります。ファイルを前処理し、それらの文字をより一般的なものに置き換えることなく、LOAD DATA INFILE でこのデータをロードすることは可能ですか?