非常に大きな.csvファイル(〜4gb)をmysqlにインポートしようとしています。 phpmyadminの使用を検討していましたが、最大アップロードサイズは2 MBです。誰かが私にコマンドラインを使わなければならないと言った。
私はこれらの指示を使用してそれをインポートするつもりでした: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c568
.csvテーブルの最初の行をmysqlテーブルの列名として設定するコマンドは何ですか?このオプションはphpmyadminを介して使用できるため、mysqlコマンドラインバージョンでもある必要があります。私を助けてください。ありがとうございました。
-ラージ
このコマンドを試してください
load data local infile 'file.csv' into table table
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(column1, column2, column3,...)
ここでのフィールドは、データを格納する必要がある実際のテーブルフィールドです。で囲まれた行と終了した行はオプションであり、Excelエクスポートなどの二重引用符で囲まれた列がある場合に役立ちます。
詳細については、 manual を確認してください。
最初の行をテーブルの列名として設定するには、その行の読み取りを無視し、コマンドに値を追加します。
あなたがすることができます
mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`
つまり、ファイルがコンマで区切られており、セミコロンで区切られていない場合です。そうでない場合は、sed
も必要になるかもしれません。
これを試して:
mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
Mysqlimportを使用してヘッダー行を持つcsvをインポートするには、追加するだけです
--ignore-lines=N
(データファイルの最初のN行を無視します)
このオプションは、リンクしたページで説明されています。
単にインポートすることができます
mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv
注:Csvファイル名とテーブル名は同じである必要があります
次の方法で配置できます。
LOAD DATA LOCAL INFILE 'C:/Users/userName/Downloads/tableName.csv' INTO TABLE tableName FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
別のオプションは、csvkitライブラリのcsvsqlコマンドを使用することです。
コマンドラインで直接使用する例:
csvsql --db mysql:///test --tables yourtable --insert yourfile.csv
これは、コマンドラインで直接実行するか、複数のファイルに対してこれを行う必要がある場合に、自動化のためにpythonまたはシェルスクリプトに組み込むことができます。
csvsqlでは、csvの構造に基づいてオンザフライでデータベーステーブルを作成できるため、csvの最初の行を自動的にMySQLテーブルヘッダーとしてキャストするライトコードの方法です。
完全なドキュメントと詳細な例はこちら https://csvkit.readthedocs.io/en/1.0.3/scripts/csvsql.html