MySQLインポートcsvファイルメモ

2025 ワード

最近、MySQLをデータベースとして開発し、schemaを設計し、QAにcsvのデータを作成させた.いくつかのテーブルは、自己成長整数をプライマリ・キーとして使用し、テーブル間に相互参照の外部キーがあります.外部キー参照関係を維持するには、すべてのプライマリキーフィールドにcsvの値を使用します.これは
オートインクリメントフィールドで生成された新しい値とインポートされたプライマリ・キーが重なるエラー.この問題を解決するには、自増フィールドの開始値をリセットする必要があります.次のSQL文で実行できます.
alter table product set auto_increment = 1000;

 
また,開発者が自分の環境でcsvデータをインポートしやすいように,インポートスクリプトを提供する必要がある.多くの人が自然に
load data infile <csv file> into <table>

しかし、実際には、このメソッドで指定されたファイルはMySQLサーバ上のパスであり、通常、絶対パスまたは相対サーバが考えているルートディレクトリの相対パス(例えば/var/lib/data)を使用します.これらの隠れたルールを知らないと、自分では理解できない間違いにぶつかることが多い.しかし、実際には、load data文はlocalモードもサポートしています.このモードでは、mysqlはmysqlクライアントツールを実行するホストからcsvファイルを探します.csvファイルが相対パスで指定されている場合は、現在のパスから探します.また、csvファイルのフィールドが二重引用符で参照されている場合はload
文にはenclodsedで指定する必要があります.そうしないと、インポートされたデータが正しくありません.次の例を示します.
load data local infile "../data/product.csv" into table product fields terminated by ',' enclosed by '"';
load data local infile "../data/revision.csv" into table revision fields terminated by ',' enclosed by '"';
load data local infile "../data/code_location.csv" into table code_location fields terminated by ',' enclosed by '"';
load data local infile "../data/program.csv" into table program fields terminated by ',' enclosed by '"';
load data local infile "../data/program_revision.csv" into table program_revision fields terminated by ',' enclosed by '"';
load data local infile "../data/user.csv" into table user fields terminated by ',' enclosed by '"';

最後にload dataの公式ドキュメントリンクhttp://dev.mysql.com/doc/refman/5.1/en/load-data.htmlです.RTFMは真理のようだ.