1

LOAD DATA LOCAL INFILEを使用してカスタム値を追加するにはどうすればよいですか?time_added列は7番目の列であり、ファイルには1番目と2番目の列に2つの値しかありません。7番目の列のtime_addedファイルからロードするときにUNIXタイムスタンプを使用したいと思います。

このコードは機能していません:

$result = mysql_query("LOAD DATA LOCAL INFILE '{$myFile}' INTO TABLE {$table} FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n' SET `time_added`=unix_timestamp()");
4

2 に答える 2

2

なぜこれが機能しないのですか?

LOAD DATA INFILE 'file.txt'
  INTO TABLE t1
  (column1, column2)
  SET column7 = unix_timestamp();
于 2012-10-19T05:09:58.980 に答える
2

@iouri によって与えられた回答は、質問に対処するための重要な要素、つまり、.csvファイルによって入力された列の明示的なリストを示しています(column1, column2)。この行はLOAD、ファイルからデータをロードするときにこれらの列のみを考慮するように関数に通知し、の.csvようなエラーを回避しますRow 1 doesn't contain data for all columns

カスタム列を含むすべての列をテーブル定義にリストする必要があります。また、括弧内にリストされている列名は、テーブル定義で定義されている列の名前と一致する必要があります。たとえば、テーブル定義で名前付きの 2 つの列が指定されている場合、その行の上に行を配置する必要がありuserます。id(user, id)SET column7 = unix_timestamp()

(no )LOAD DATA LOCAL INFILEの代わりに必要なことを再確認することもできます。load-dataのドキュメントで指定されているように、キーワードはファイルの予想される場所に影響を与え、オプションを使用できるようにサーバーとクライアントの両方を適切に構成する必要があります。LOAD DATA INFILELOCALLOCALLOCAL

于 2016-01-24T05:51:57.937 に答える