官术网_书友最值得收藏!

3.3.6 LOAD CSV語句

LOAD CSV語句用于從CSV文件中導入數據。

● CSV文件的URL可以由FROM后面緊跟的任意表達式來指定。

● 需要使用AS來為CSV數據指定一個變量。

● LOAD CSV支持以gzip、Deflate和ZIP壓縮的資源。

● CSV文件可以存在數據庫服務器上,通過file:///URL來訪問。LOAD CSV也支持通過HTTPS、HTTP和FTP來訪問CSV文件。

● LOAD CSV支持HTTP重定向,但基于安全考慮,重定向時不能改變協議類型,比如從HTTPS重定向到HTTP。

3.3.6.1 文件URL的配置項

(1)dbms.security.allow_csv_import_from_file_urls(6)

這個選項決定Cypher在使用LOAD CSV時是否支持使用fille:/// URL來加載數據。該URL唯一標識了數據庫服務器文件系統上的文件。dbms.security.allow_csv_import_from_file_urls=false將完全禁止LOAD CSV訪問文件系統。

(2)dbms.directories.import(7)

設置LOAD CSV中file:/// URL中的根路徑。這必須設置為數據庫服務器上的文件系統的單個目錄,它讓所有的請求從file:///URL加載時都使用根路徑的相對路徑(類似UNIX下的chroot操作)。默認值是import,這是基于安全考慮阻止數據庫訪問標準的import之外的目錄下的文件。將dbms.directories.import設置為空可以消除這個安全隱患,允許訪問系統上的任何文件,但是不推薦這么做。

文件URLs將相對于dbms.directories.import來解析。例如,一個典型的URL類似file:///myfile.csv或者file:///myproject/myfile.csv。

● 如果dbms.directories.import設置的是默認值import,那么在LOAD CSV語句將分別從<NEO4J_HOME>/import/myfile.csv和<NEO4J_HOME>/import/myproject/myfile.csv中讀取數據。

● 如果設置為/data/csv,上面的LOAD CSV中的URL將分別從/data/csv/myfile.csv和/data/csv/myproject/myfile.csv中讀取數據。

詳情參見下面小節(jié)的例子。

3.3.6.2 CSV文件格式

使用LOAD CSV導入的CSV文件必須滿足如下要求:

● 字符編碼為UTF-8。

● 行結束符取決于具體的操作系統,如unix上為\n,windows上為\r\n。

● 默認的字段終止符為“,”。

● 字段終止符可以使用LOAD CSV中的FIELDTERMINATOR選項來修改。

● CSV文件允許引號字符串,但讀取數據的時候引號字符會被丟棄。

● 字符串的引號字符為雙引號“"”。

● 轉義字符為“\”。

3.3.6.3 從CSV文件導入數據

從CSV文件導入數據到Neo4j,可以用LOAD CSV把數據加載到查詢語句中。然后使用正常的Cypher更新語句將數據寫入到數據庫中。

比如artists.csv文件內容如下:

查詢:

CSV文件中的每一行都創(chuàng)建一個標簽為Artist的節(jié)點。CSV文件中的另外兩列分別設置為節(jié)點的屬性。

結果:

3.3.6.4 導入包含文件頭的CSV文件

當導入的CSV文件包含文件頭時,可以把每一行看作一個map,而不是字符串數組。

比如artists.csv文件內容如下:

查詢:

這時,文件的開始行包含列的名稱。指定WITH HEADERS后,可以通過對應的列名來訪問指定的字段。

結果:

3.3.6.5 導入自定義分隔符的CSV文件

CSV文件的分隔符有時候不是逗號,而是其他分隔符。這時可以使用FIELDTERMINATOR來指定分隔符。

比如artists-fieldterminator.csv文件內容如下:

查詢:

本例中字段之間以分號分隔,因此,在LOAD CSV中使用了FIELDTERMINATOR自定義分隔符。

結果:

3.3.6.6 導入海量數據

如果導入的CSV文件包含百萬數量級的行,可以使用USING PERIODIC COMMIT來告訴Neo4j每導入一定數量行之后就提交(Commit)一次。這樣可避免在事務過程中耗費大量的內存。默認情況下,每1000行會提交一次。

查詢:

結果:

3.3.6.7 設置提交頻率

可以設置提交的頻率,如本例中設置為500行。

查詢:

結果:

3.3.6.8 導入包含轉義字符的數據

本例中同時包含了引用字符和轉義字符。

比如artists-with-escaped-char.csv文件內容如下:

查詢:

提示:提示:這里的字符串用雙引號括起來。同時,關注本例中字符串的長度。

結果:

主站蜘蛛池模板: 望城县| 韶关市| 磐石市| 文水县| 临澧县| 桂林市| 云和县| 聂拉木县| 沧州市| 伊宁市| 湖北省| 土默特左旗| 吉水县| 廊坊市| 怀安县| 龙南县| 乌苏市| 永年县| 临沧市| 香河县| 景宁| 巴林左旗| 镶黄旗| 商都县| 三河市| 乌恰县| 湘潭市| 通化县| 景东| 襄樊市| 浮山县| 咸丰县| 锡林浩特市| 南江县| 页游| 皋兰县| 东至县| 留坝县| 富锦市| 鲁甸县| 高雄县|