0

ネットワークインターフェイスを使用せずに、データベース「dbname」のsqldumpファイルをテーブル「data」にインポートしたいと思います。

経由でファイルをインポートするとき

mysql dbname -u databaseuser -pdatabasepass<data.sql

これは私のubuntu12.04では本当に遅いです

しかし、代わりにこれを使用すると:

mysqlimport -u databaseuser -pdatabasepass --local data.sql

それは通常と同じくらい速いです。

私のmashineでは、「mysql」と「<」を使用すると、各行が個別に解析されるためだと思います。

CREATEおよびDROPTABLEのものでSQLファイルをインポートするためにmysqlimport構文を使用する方法はありますか?

sql-dumpの上部を(droptableとcreatetableステートメントを使用して)自動的に分割し、INPUTステートメントを含むファイルの残りの部分のみをmysqlinsertに送信することもできます。これは機能するはずです。

4

3 に答える 3

0

それを直接行う方法はありません。通常のmysqldumpの代わりに実行する必要があります。これmysqldump --tabにより、テーブル定義を含む.sqlファイルと、mysqlimportでインポートできるデータを含むCSVファイルの両方が作成されます。

于 2012-05-07T17:52:54.743 に答える
0

UNIXソケットファイルへのパスは(または-S)で指定でき--socket=/path/to/...ますが、これはより高速な場合があります。ソケットパスはサーバーのmy.cnfにあります。したがって、たとえば(そして、ここでパスを作成しているだけです)。

mysql dbname -u databaseuser -pdatabasepass -S /var/run/mysqld/mysqld.sock < data.sql
于 2012-05-07T19:55:10.420 に答える
0

このスクリプトを使用できます:mysqldumpからの出力をより小さなファイルに分割するにはどうすればよいですか?

変更すると、1つのファイルにcreate-statementsのみが含まれ、別のファイルにdataステートメントのみが含まれるようになります。

于 2013-05-30T16:10:32.590 に答える