web-dev-qa-db-ja.com

テキストファイルからmysqlデータベースにデータをインポートする方法

このタブ区切りデータを含むtext_file.txtという名前の350MBのファイルがあります:

345868230   1646198120  1531283146  Keyword_1531283146  1.55    252910000
745345566   1646198120  1539847239  another_1531276364  2.75    987831000
...

MySQLデータベース名:Xml_Date

データベーステーブル:PerformanceReport

すべての宛先フィールドを持つテーブルを既に作成しました。

このテキストファイルデータをMySQLにインポートしたい。私はグーグルでLOAD DATA INFILEのようないくつかのコマンドを見つけましたが、その使用方法についてはかなり混乱しています。

このテキストファイルデータをインポートするにはどうすればよいですか?

それは次のように単純でなければなりません...

LOAD DATA INFILE '/tmp/mydata.txt' INTO TABLE PerformanceReport;

デフォルトでは、LOAD DATA INFILEはタブ区切りの行ごとに1行を使用するので、問題なく使用できます。

66
Omnikrys

MySQLのLOAD DATAコマンドの使用に関するウォークスルー:

  1. テーブルを作成します。

    CREATE TABLE foo(myid INT, mymessage VARCHAR(255), mydecimal DECIMAL(8,4));
    
  2. タブ区切りファイルを作成します(列間にタブがあることに注意してください):

    1   Heart disease kills     1.2
    2   one out of every two    2.3
    3   people in America.      4.5
    
  3. Load dataコマンドを使用します。

    LOAD DATA LOCAL INFILE '/tmp/foo.txt' 
    INTO TABLE foo COLUMNS TERMINATED BY '\t';
    

    このコマンドを実行できないという警告が表示された場合、ここで説明されている--local-infile=1パラメーターを有効にする必要があります。 MySQL Load Errorを修正する方法

  4. 行が挿入されます:

    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
  5. 動作したかどうかを確認します。

    mysql> select * from foo;
    +------+----------------------+-----------+
    | myid | mymessage            | mydecimal |
    +------+----------------------+-----------+
    |    1 | Heart disease kills  |    1.2000 |
    |    2 | one out of every two |    2.3000 |
    |    3 | people in America.   |    4.5000 |
    +------+----------------------+-----------+
    3 rows in set (0.00 sec)
    

テキストファイルの列を読み込む列を指定する方法:

このような:

LOAD DATA LOCAL INFILE '/tmp/foo.txt' INTO TABLE foo
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
(@col1,@col2,@col3) set myid=@col1,mydecimal=@col3;

ファイルの内容は、変数@ col1、@ col2、@ col3に格納されます。 myidは列1を取得し、mydecimalは列3を取得します。これを実行すると、2行目が省略されます。

mysql> select * from foo;
+------+-----------+-----------+
| myid | mymessage | mydecimal |
+------+-----------+-----------+
|    1 | NULL      |    1.2000 |
|    2 | NULL      |    2.3000 |
|    3 | NULL      |    4.5000 |
+------+-----------+-----------+
3 rows in set (0.00 sec)
50
Eric Leschinski

テーブルがタブ以外で区切られている場合、次のように指定する必要があります...

LOAD DATA LOCAL 
    INFILE '/tmp/mydata.txt' INTO TABLE PerformanceReport 
    COLUMNS TERMINATED BY '\t'  ## This should be your delimiter
    OPTIONALLY ENCLOSED BY '"'; ## ...and if text is enclosed, specify here
13
peixe

LOAD DATA INFILEステートメントは、テキストファイルから行を非常に高速でテーブルに読み込みます。

LOAD DATA INFILE '/tmp/test.txt' 
INTO TABLE test
FIELDS TERMINATED BY ','
LINES STARTING BY 'xxx';

データファイルが次のような場合:

xxx"abc",1
something xxx"def",2
"ghi",3

結果の行は( "abc"、1)と( "def"、2)になります。ファイルの3行目は、プレフィックスが含まれていないためスキップされます。

LOAD DATA INFILE 'data.txt'
INTO TABLE tbl_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'

Mysqlimportユーティリティを使用してデータファイルをロードすることもできます。 LOAD DATA INFILEステートメントをサーバーに送信することにより動作します

mysqlimport -u root -ptmppassword --local test employee.txt

test.employee: Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
3
priya gupta

オプションを設定する必要があります。

local-infile=1

my.cnfファイルの[mysql]エントリに追加するか、--local-infileオプションを使用してmysqlクライアントを呼び出します。

mysql --local-infile -uroot -pyourpwd yourdbname

「ローカルインファイル」機能サーバー側を有効にするには、同じパラメーターが[mysqld]セクションにも定義されていることを確認する必要があります。

これはセキュリティ上の制限です。

LOAD DATA LOCAL INFILE '/softwares/data/data.csv' INTO TABLE tableName;
1

1。タブ区切りのtxtファイルの場合:

LOAD DATA LOCAL INFILE 'D:/MySQL/event.txt' INTO TABLEイベント

'\ r\n'で終了した行。

2。そうでない場合:

LOAD DATA LOCAL INFILE 'D:/MySQL/event.txt' INTO TABLEイベント

FIELDS TERMINATED BY 'x'(ここでxはコンマ '、'、タブ '\ t'、セミコロン ';'、スペース '')

'\ r\n'で終了した行。

0
Shu Zhang
LOAD DATA INFILE '/home/userlap/data2/worldcitiespop.txt' INTO TABLE cc FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
  • 1行を無視して、列名を含む最初のヘッダー行をスキップします
  • FIELDS TERMINATED BY '、'は、コンマ区切りファイルを読み取ります
  • Windowsシステムでテキストファイルを生成した場合、Windowsプログラムは通常2文字を行末記号として使用するため、LINES TERMINATED BY '\ r\n'を使用してファイルを適切に読み取る必要がある場合があります。ワードパッドなどの一部のプログラムでは、ファイルの書き込み時に\ rを行末記号として使用する場合があります。このようなファイルを読み取るには、LINES TERMINATED BY '\ r'を使用します。
0
Amitesh