向MySQL数据库表导入txt和csv文件数据 && 向Solr导入MySQL数据

1.txt和csv文件导入mysql数据库

首先创建一个数据库表,我用的图形化可视界面是SQLyog(这个无所谓)。txt和csv是差不多的步骤。

CREATE TABLE shuyu (
  id VARCHAR (100),
  term VARCHAR (100),
  Engname VARCHAR (200),
  Def VARCHAR (255)
) ;

创建好表格之后导入你已经准备好的txt或csv文件。(注意:文件的第一行可以删去,表格创建的时候已经定义过表头了,不然会被当作数据导入)

LOAD DATA LOCAL INFILE 'F:\\shuili.txt'
INTO TABLE shuyu
CHARACTER SET utf8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';

FIELDS TERMINATED BY是指你的这个txt文件使用什么来分隔的。
LINES TERMINATED BY是指换行符,txt默认是\r\n
这样运行一下就可以导入了。

其他tips:
1.如果导入出现warning,可以SHOW WARNINGS;来看一下到底出了什么问题。
2.导入txt经常会出现乱码情况,在新建一个库表的时候很可能不是utf8格式的,可以手动转换一下。
选中你创建的表格-点击下图中这个按钮;在这里插入图片描述
第一处要改的是这个地方,修改成utf8。在这里插入图片描述
第二处,每一列的编码方式都需要改一下。
在这里插入图片描述
这样再导入就是正常显示的了。

附赠:TRUNCATE TABLE shuyu;
上面这个语句是删除表内数据保留格式的意思。可以先删除数据再重新导入,如果标题乱码的话就把库表删除重建一下,注意修改编码方式。

导入成功。
在这里插入图片描述

2.Solr导入mysql数据

新建一个core

进入solr/bin下,新建core

solr create -c  shuyu

这个core的名称就是shuyu,可以自行更改,运行完成后就可以看到F:\solr-7.7.3\solr-7.7.3\server\solr\shuyu多了一个文件夹。
前期准备
把三个jar包放入solr-7.7.3\server\solr\shuyu\lib中,分别是dist文件夹中的两个dataimport的jar包复制过去,还有一个是mysql的驱动文件(这个需要去网上下载)。
这里分分享一下我的mysql驱动jar——
链接:https://pan.baidu.com/s/1G6NmHzC2vWCDQfx09h7m5Q
提取码:v81c在这里插入图片描述
将这三个放入你的core对应的lib之下。在这里插入图片描述

配置文件修改

mysql中数据库表已经准备好了,下一步是将我们的数据存放进solr仓库中。

data-config.xml

在你的core的conf文件夹下新建data-config.xml文件,里面写上你的数据相关配置。如我的上面shuyu这个库中的数据,展示我的data-config.xml文件,就是最简单的一些内容。

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="shuyu"  type="JdbcDataSource" driver="com.mysql.jdbc.Driver" 
	            url="jdbc:mysql://localhost:3306/mysql?useSSL=false&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai"
				user="root" 
				batchSize="-1"   />
    <document>
		 <entity name="shuyu" query="select * from shuyu">
            <field column="id" name="id" />
            <field column="term" name="term" />
            <field column="Engname" name="Engname" />
            <field column="Def" name="Def" />
		</entity>
	</document>
</dataConfig>

我的数据库设置了没有密码的,如果有密码在root下面加一个password=“你的密码”

solrconfig.xml

data-config.xml写好了之后,要让系统知道它的路径,同样在你的core的conf文件夹底下打开solrconfig.xml。
第一步,加上下面内容。

	 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
       <lst name="defaults"> 
          <str name="config">data-config.xml</str> 
       </lst> 
  </requestHandler>

刚入门的同学如果不知道加在哪里,就直接加在最后一行的上面即可。
在这里插入图片描述
第二步,找到这一块,加上箭头内容,根据自己的solr版本和实际情况略微修改。
在这里插入图片描述
代码:👇

  <lib dir="${solr.install.dir:../../solr-7.7.3}/contrib/dataimporthandler/" regex=".*\.jar" /> 

managed-schema

F:\solr-7.7.3\solr-7.7.3\server\solr\shuyu\conf\managed-schema下定义域,与solrconfig.xml中一一对应,要看一下id和name是否已经默认定义了,如果有的话不用重复写,会报错
设置唯一主键id

<uniqueKey>id</uniqueKey>

定义你的域,根据你的数据库表实际情况,可以上去看一下我的数据库截图里面结构。

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <!-- docValues are enabled by default for long type so we don't need to index the version field  -->
    <field name="term" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="Engname" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="Def" type="string" multiValued="false" indexed="true" required="true" stored="true"/>

要注意:id的类型type需要和_root_一致,否则Solr Admin界面会加载不到core并报这个错误。

这样我们就配置好了,运行solr,选择你的core,导入数据。
这里的Entity就是你刚刚在dataConfig文件下entity设置的 name
在这里插入图片描述
点击Execute,等了3-5秒结果就出来了,如果一直没有就点refresh status。
在这里插入图片描述
检验一下,去Query查询一下。
在这里插入图片描述
导入成功!

可能出现的问题

导入数据有可能出现这样的情况

Requests: 1 1/s, Fetched: 1,823 1,823/s, Skipped: 0 , Processed: 0

查询的时候仍然是空的,说明数据没有被导入,一般问题出在data-config.xml和managed-schema这两个文件,是否多了空格和其他符号等;
另一个可能的原因,mysql数据库中的数据类型与你后来定义的不匹配,建议在MySQL中都定义成VARCHAR类型,这样在managed-schema就可以type=string,这样是不报错的;
还有一种原因,数据库中你的csv或者txt文件存在部分不规范的,导入的时候出错了,建议在MySQL中遍历一下表看一下是不是后面数据出错了,虽然导入了MySQL但是solr比较敏感就出错了。
如果仍然没有解决问题,可以去Logging里面看一下报错信息。在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值