You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mention vector and array handling for parquet files (#3151)
This pull request updates the import documentation to clarify the
handling of array and vector data when importing from CSV and Parquet
files. The changes explain when delimiter options are needed, and how
Parquet `LIST` typed columns are mapped to Cypher types, reducing the
need for explicit configuration in many cases.
---------
Co-authored-by: Reneta Popova <reneta.popova@neo4j.com>
Copy file name to clipboardExpand all lines: modules/ROOT/pages/import.adoc
+12-3Lines changed: 12 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,6 +191,7 @@ The xref:import.adoc#import-tool-examples[examples] for CSV can also be used wit
191
191
|--array-delimiter=<char>
192
192
|Delimiter character between array elements within a value in CSV data. Also accepts `TAB` and e.g. `U+20AC` for specifying a character using Unicode.
193
193
For CSV data, this value must be different from the one specified in the `--delimiter` option.
194
+
For Parquet data, this is only needed if the array is encoded as a string.
194
195
195
196
====
196
197
* ASCII character -- e.g. `--array-delimiter=";"`.
@@ -518,6 +519,7 @@ performance, this value should not be greater than the number of available proce
518
519
|--vector-delimiter=<char>
519
520
|label:new[Introduced in 2025.10] Delimiter character between vector coordinates within a value in CSV data. Also accepts `TAB` and e.g. `U+20AC` for specifying a character using Unicode.
520
521
For CSV data, this value must be different from the one specified in the `--delimiter` option.
522
+
For Parquet data, this is only needed if the vector is encoded as a string.
521
523
|;
522
524
| {check-mark}
523
525
| {check-mark}
@@ -912,6 +914,7 @@ If the database into which you import does not exist prior to importing, you mus
912
914
|--array-delimiter=<char>
913
915
|Delimiter character between array elements within a value in CSV data. Also accepts `TAB` and e.g. `U+20AC` for specifying a character using Unicode.
914
916
For CSV data, this value must be different from the one specified in the `--delimiter` option.
917
+
For Parquet data, this is only needed if the array is encoded as a string.
915
918
916
919
====
917
920
* ASCII character -- e.g. `--array-delimiter=";"`.
@@ -1240,6 +1243,7 @@ If not specifically provided, the default temp path will be created inside the d
1240
1243
|--vector-delimiter=<char>
1241
1244
|label:new[Introduced in 2025.10] Delimiter character between vector coordinates within a value in CSV data. Also accepts `TAB` and e.g. `U+20AC` for specifying a character using Unicode.
1242
1245
For CSV data, this value must be different from the one specified in the `--delimiter` option.
1246
+
For Parquet data, this is only needed if the vector is encoded as a string.
1243
1247
|;
1244
1248
| {check-mark}
1245
1249
| {check-mark}
@@ -1596,6 +1600,9 @@ A different delimiter can be specified with `--array-delimiter`.
1596
1600
Arrays are not affected by the `--normalize-types` flag.
1597
1601
For example, if you want a byte array to be stored as a Cypher long array, you must explicitly declare the property as `long[]`.
1598
1602
1603
+
Array values can also be sourced directly from a `LIST` typed column with Parquet files, in which case the `--array-delimiter` option is not needed.
1604
+
Furthermore, values read from `LIST` typed columns are mapped to their corresponding Cypher types, e.g., `LIST<INT>` is mapped to `int[]`, `LIST<STRING>` is mapped to `string[]`, and so on, and there is no need to specify the type in the header.
1605
+
1599
1606
[NOTE]
1600
1607
====
1601
1608
CSV-based import does not import empty arrays, because they cannot be distinguished from arrays that are set to `null`.
@@ -1713,9 +1720,6 @@ The map must specify both the `coordinateType` and the `dimensions` of the vecto
1713
1720
The `coordinateType` can be one of `byte`, `short`, `int`, `long`, `float`, or `double`.
1714
1721
The `dimensions` must be between 1 and 4096, inclusive.
1715
1722
1716
-
By default, vector values are separated by `;`.
1717
-
A different delimiter can be specified with `--vector-delimiter`.
1718
-
1719
1723
The dimensions of each vector in the data must match what is specified in the header.
1720
1724
1721
1725
A vector in a header could for example look like this:
@@ -1725,6 +1729,11 @@ A vector in a header could for example look like this:
1725
1729
----
1726
1730
1727
1731
Note that quotation marks are necessary, since the `,` inside the map would otherwise be interpreted as a column delimiter.
1732
+
1733
+
With CSV files and Parquet files where vector values are encoded as strings, by default, vector values are separated by `;`.
1734
+
A different delimiter can be specified with `--vector-delimiter`.
1735
+
1736
+
Starting with Neo4j 2026.06, vector values can also be sourced from a `LIST` typed column with Parquet files, in which case the `--vector-delimiter` option is not needed.
0 commit comments