指定したCSVの内容のみに基づいて新しいMySQLテーブルを生成する方法を探しています。私が使用するCSVファイルには、次のプロパティがあります。
Excelではこれはすべてかなり単純ですが、MySQLではそうではありません(Googleでは運がありません)。私が見ているべきものについて何か提案はありますか?
csvsql を使用できます。これはcsvkit
(CSVファイルに変換して操作するための一連のユーティリティ)の一部です。
Sudo pip install csvkit
csvsql --dialect mysql --snifflimit 100000 datatwithheaders.csv > mytabledef.sql
CREATE TABLE
ステートメントを作成します。列名はCSVファイルの最初の行から取得されます。Pythonの使用に問題がなければ、Pandasがうまく機能しました(csvsqlは永久にハングし、ケースよりもcolsとrowが少なくなります)。次のようなもの:
from sqlalchemy import create_engine
import pandas as pd
df = pd.read_csv('/PATH/TO/FILE.csv', sep='|')
# Optional, set your indexes to get Primary Keys
df = df.set_index(['COL A', 'COL B'])
engine = create_engine('mysql://user:pass@Host/db', echo=False)
df.to_sql(table_name, engine, index=False)
さまざまな列のデータ型、サイズなどに基づいてCREATE TABLEを生成する必要があります。
次に、LOAD DATA INFILE ... '|'で終了するフィールドを使用します"\ n"で終了する行SKIP 1 LINE ...; (詳細はマニュアルページを参照してください。)
各csv->テーブルについても同様に行います。