web-dev-qa-db-ja.com

MySQLにCSVをインポート

データベースとテーブルを作成しました。必要なフィールドもすべて作成しました。行のIDを含む46のフィールドを作成しました。 CSVにはIDフィールドが含まれておらず、列のヘッダーも含まれていません。私はこれすべてに新しいですが、これを理解しようとしています。私はここで怠惰な答えを求めているのではなく、方向を探しています。

CSVをインポートする方法を理解しようとしていますが、auto_incrementが最初に作成したフィールドであるIDフィールドに入力されることを期待しているため、2番目のフィールドからデータのインポートを開始します。

私は運が悪くてこれらの指示を試しました。誰かが洞察を提供できますか?

  1. CSVファイルの列名は、テーブルの列名と一致する必要があります
  2. 必要な.csvファイルを参照します
  3. LOAD DATAオプションを使用してCSVを選択します
  4. のチェックボックスをオンにしますテーブルデータをファイルで置き換えます
  5. Fields terminate byボックスに、,と入力します
  6. ボックスで囲まれたフィールド、"
  7. エスケープされたフィールドボックス内、\
  8. で終了する行ボックスで、auto
  9. Column namesボックスに、,のようにcolumn1,column2,column3で区切って列名を入力します
  10. のローカルのキーワードを使用してチェックボックスをオンにします

編集:

CSVファイルは32.4kbです

私のCSVの最初の行は:

Test Advertiser,23906032166,119938,287898,,585639051,287898 - Engager - 300x250,88793551,Running,295046551,301624551,2/1/2010,8/2/2010,Active,,Guaranteed,Publisher test,Maintainer test,example-site.com,,All,All,,Interest: Dental; custom geo zones: City,300x250,-,CPM,$37.49 ,"4,415","3,246",3,0,$165.52 ,$121.69 ,"2,895",805,0,0,$30.18 ,$37.49 ,0,$0.00 ,IMPRESSIONBASED,NA,USD
20
404error

MySQLはインポート中に特定のカラムに値を設定できます。 idフィールドが自動インクリメントに設定されている場合、インポート中にそれをnullに設定すると、MySQLがインクリメントする値をそれに割り当てます。 phpMyAdminの[SQL]タブに次のようなものを入れてみてください。

LOAD DATA INFILE 'path/to/file.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' SET id=null;
43
webbiedave

このページを見て、探しているものが含まれているかどうかを確認してください。 1つのテーブルしか扱っていないので、必要なのはこれだけです。 MYSQL LOAD DATA INFILE

したがって、たとえば、次のようなことができます。

LOAD DATA INFILE 'filepath' INTO TABLE 'tablename' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column2, column3, column4);

それはあなたにアイデアを与えるはずです。もちろん、上記のリンクにあるように、追加できるオプションは他にもあります。

17
Kavet Kerek

インポートファイルがローカルの場合は、必ずLOAD DATA [〜#〜] local [〜#〜] INFILEを使用してください。 :)

5
paiego