首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >轻松导入MySQL --tab转储

问轻松导入MySQL --tab转储
EN

Stack Overflow用户
提问于 2012-07-14 00:07:50
回答 3查看 1.2K关注 0票数 4

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

有没有一种简单的方法将这个目录中的文件重新导入到MySQL服务器中?我在mysqlimport中找不到该选项。

EN

回答 3

Stack Overflow用户

发布于 2013-10-30 18:42:38

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-07-14 00:37:40

有几种方法可以做到这一点--最直接的方法是

代码语言:javascript
复制
mysql db < sql_structure_file

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

代码语言:javascript
复制
LOAD DATA LOCAL INFILE tab_delimited_file INTO TABLE 

(使用适当的名称、分隔符等)

票数 1
EN

Stack Overflow用户

发布于 2018-12-12 08:40:39

我使用这个bash脚本,它首先导入用于构建表的所有sql文件,然后导入txt文件。数据是使用后台进程并行加载的-基本上模拟了mysqlimport中的多线程选项。用法如下:

代码语言:javascript
复制
./import_table.sh database_name /path/to/dump/files

脚本:

代码语言:javascript
复制
#!/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';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11474210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档