0

、、の3つのsystem_settings列があるという名前のテーブルがあります。IDActual_SettingStandards_Setting

ID列には、、、&の3つの行'Virtual Machine 1''Virtual Machine 2'あります'Virtual Machine 3'

'Actual_Setting'テキストファイルから。の列にデータをインポートしたいID = 'Virtual Machine 1'

私はこのクエリを使用してみました:

LOAD DATA LOCAL IN FILE 'C:/Program Files/MySQL/MySQL Server 5.5/bin/syspolicy.txt'
INTO system_settings(Actual_Setting)
WHERE ID LIKE 'Virtual Machine 1';

ただし、エラーが返されます。

MySQL Server 5.5、MySQLクエリブラウザ、およびWindows7PCを使用しています。

4

1 に答える 1

0

LOAD DATA既存の行を更新するのではなく、常に新しい行にデータを挿入します。

ただし、キーの競合が発生した場合は、最初にそのキーワードを使用して既存の行を削除できます。列にキーがREPLACEあり、 の値を保持する必要がない場合は、この機能を利用できます。UNIQUEIDStandards_Setting

LOAD DATA LOCAL INFILE 'C:/Program Files/MySQL/MySQL Server 5.5/bin/syspolicy.txt'
  REPLACE INTO TABLE system_settings
  FIELDS TERMINATED BY '' ENCLOSED BY '' ESCAPED BY ''
  LINES STARTING BY '' TERMINATED BY ''
  (Actual_Setting)
  SET ID = 'Virtual Machine 1'

(ファイル全体を 1 つのフィールドに読み込む必要があるため、デフォルトを上書きし、フィールドまたは行の終端/引用符/エスケープ文字がないことを明示的に指定する必要があることに注意してください。)

それ以外の場合、既存のレコードを更新する必要がある場合は、ファイルを一時テーブルにロードしてから、テーブルの内容を更新することをお勧めします。

CREATE TEMPORARY TABLE foo (content LONGTEXT);

LOAD DATA LOCAL INFILE 'C:/Program Files/MySQL/MySQL Server 5.5/bin/syspolicy.txt'
  INTO TABLE foo
  FIELDS TERMINATED BY '' ENCLOSED BY '' ESCAPED BY ''
  LINES STARTING BY '' TERMINATED BY ''
  (content);

UPDATE system_settings
  SET Actual_Setting = (SELECT content FROM foo)
WHERE ID = 'Virtual Machine 1';

DROP TEMPORARY TABLE foo;
于 2012-08-29T05:02:34.507 に答える