五 solr 索引資料匯入 csv格式

2021-07-02 12:34:43 字數 2304 閱讀 7637

有時候我們有一些通過sql匯出的csv格式的檔案如果需要匯入到slor,可以採用以下的方法

首先假定我們的schema.xml如下所示:

<

field

name

="id"

type

="string"

stored

="true"

indexed

="true"

/>

<

field

name

="name"

type

="string"

stored

="true"

indexed

="true"

/>

<

field

name

="isbn"

type

="string"

stored

="true"

indexed

="true"

/>

<

field

name

="description"

type

="text"

stored

="true"

indexed

="true"

/>

我們的csv(books.csv)檔案的內容如下:

id;name;isbn;description;publish_date

1;solr cookbook;abc123456;"

solr cookbook";2011-06

2;some book 1;jhds871281;"

some book";2010-01

3;some book 2;9182ksc98;"

another book";2010-02

為了能夠將上面的csv資料正確的匯入,我們需要對solrconfig.xml檔案進行如下修改:

<

requesthandler

name

="/update/csv"

class

="solr.csvrequesthandler"

startup

="lazy"

>

<

lst

name

="defaults"

>

<

str

name

="separator"

>;

str>

<

str

name

="header"

>true

str>

<

str

name

="skip"

>publish_date

str>

<

str

name

="encapsulator"

>"

str>

lst>

requesthandler

>

說明:startup="lazy":通過該引數告訴solr在第一次新增時才例項化這個更新處理程式

; : 通過該引數告訴solr 字段之間是通過「;」分隔

true:通過該引數告訴solr在資料項之前含有頭資訊

publish_date :通過該引數告訴solr,publish_date 這列資料需要忽略掉

":通過該引數告訴solr資料項是通過雙引號(")進行封裝的

設定完畢,重啟solr,並提交資料:

封裝好的資料項(此處為雙引號),也可以進行拆分,如果過我們將name 欄位設為多值,那麼在requesthandler裡面做乙個小的調整,可以對如下文件進行處理:

id;name;isbn;description;publish_date

1;"solr cookbook;new solr cookbook";abc123456;"solr cookbook";2011-06

在 requesthandler裡再新增一項:true

這樣設定之後,solr裡面會新增一條id為1,name 欄位有 solr cookbook、new solr cookbook 兩個值

Solr匯入CSV檔案

首先得準備好乙份csv檔案,這份檔案可以是手動生成,也可以是從資料庫中匯出來的。參見postgresql匯入匯出資料 將postgres中的表匯出為csv檔案。上傳csv檔案示例,在csv檔案中,header不能加雙引號 postgres匯出時缺省會加上 比如下面的檔案匯入會出錯,id name 8...

mysql csv6 mysql匯入csv格式檔案

今天測試匯入csv格式檔案,雖然簡單但是如果不注意還是會出現錯誤,而且mysql在某些方面做的確實對新手不是很友好,記錄一下 建立乙個csv格式檔案 mysql 1 ycrdb more tmp loaddata.txt 1,abc,abc qq.com 1,abc,abc qq.com 1,abc...

mysql資料匯入solr

在solrconfig.xml配置資料匯入用的requesthandler和資料匯入使用的jar包 dih data config.xml 配置檔案可以是絕對路徑 或相對集合 conf 的相對路徑 deltaimportquery select from t product where prod i...