shell加载解析txt文件中的数据到数据库(适合大量数据的情况)

加载解析txt文件中的数据到数据库(适合大量数据的情况)

将txt文本文件中的数据解析到数据库有很多种方式,比如不同的语言,java,python,shell等。

今天来介绍一种mysql自带的,快速加载txt文本中的数据,录入到数据库中的方法。

该方法适合导入大量数据的情况,博主亲测,加载一个拥有400多万条数据的txt文本到数据库仅需1-2分钟。

具体方式如下(此处写成在shell函数配置加载的方式):

function loadAndStore{
  #$1 表示调用函数时传入的参数,此处代表文件路径
  if test -f $1; then
    #database_name表示你的数据库名,username表示用户名,password表示密码(去掉单引号)
    mysql -u'username' -p'password'  database_name <<eof
      load data infile "$1"
      #table_name表示你的表名
      into table table_name
      #此处将 ^ 替换成你的txt文件中的列分隔符
      fields terminated by '^'
      #此处将 \n 替换成你的txt文件中的行分隔符
      lines terminated by '\n'
      (@id, @name, @create_time)
      set
        id=@id,
        name=@name,
        create_time=@create_time;
eof
  else
    echo"文件不存在"
  fi
}

#path表示加载文件的路径
loadAndStore "path"

若是txt文件字段值之间还有分隔符,例如字段值前后都加了 ‘|’ 字符,可利用mysql的substring函数和char_length函数进行切割字符,如:

function loadAndStore{
  #$1 表示调用函数时传入的参数,此处代表文件路径
  if test -f $1; then
    #database_name表示你的数据库名,username表示用户名,password表示密码(去掉单引号)
    mysql -u'username' -p'password'  database_name <<eof
      load data infile "$1"
      #table_name表示你的表名
      into table table_name
      #此处将 ^ 替换成你的txt文件中的列分隔符
      fields terminated by '^'
      #此处将 \n 替换成你的txt文件中的行分隔符
      lines terminated by '\n'
      (@id, @name, @create_time)
      set
        id=substring(@id,2,char_length(@id)-2),
        name=substring(@name,2,char_length(@name)-2),
        create_time=substring(@create_time,2,char_length(@create_time)-2);
eof
  else
    echo"文件不存在"
  fi
}

#path表示加载文件的路径
loadAndStore "path"
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值