4

我已经使用该选项转储了一个 MySQL 数据库,该--tab选项为每个表创建 2 个文件(一个带有数据的 SQL 文件create table和一个带有数据的制表符分隔值文件)。

有没有一种简单的方法可以将此文件目录导入 MySQL 服务器?我在 中找不到选项mysqlimport

4

3 回答 3

3
for i in `ls *.sql`; do 
  sql_file=$i; 
  table_name=`echo $sql_file | sed "s/.sql$//"`
  mysql -u root database_name < $sql_file
  echo "LOAD DATA LOCAL INFILE '$table_name.txt' INTO TABLE $table_name" | mysql -u root database_name
done
于 2013-10-30T10:42:37.610 回答
1

您可以通过多种方式做到这一点 - 最直接的是

mysql db < sql_structure_file

这将创建表。然后做(从mysql客户端)

LOAD DATA LOCAL INFILE tab_delimited_file INTO TABLE 

(带有适当的名称、分隔符等)

于 2012-07-13T16:37:40.457 回答
1

我正在使用这个 bash 脚本,它首先导入所有 sql 文件来构建表,然后是 txt 文件。数据是使用后台进程并行加载的——基本上是模拟mysqlimport. 用法是这样的:

./import_table.sh database_name /path/to/dump/files

脚本:

#!/bin/bash

DIR=$(echo $2 | sed 's/\/$//')

function import_sql() {
    mysql $1 < $2;
    echo "mysql $1 < '$2'";
}

function import_txt() {
    mysqlimport --silent $1 $2;
    echo "mysqlimport --silent $1 '$2'";
}

for filename in $DIR/*.sql; do
    [ -e "$filename" ] || continue
    import_sql $1 $filename &
done
wait
echo 'ALL SQL IMPORTED';

for filename in $DIR/*.txt; do
   [ -e "$filename" ] || continue
   import_txt $1 $filename &
done
wait
echo 'ALL TXT IMPORTED';
于 2018-12-12T00:40:39.017 回答