BL_DELIMITER= Data Set Option

Specifies override of the default delimiter character for separating columns of data during data transfer or retrieval during bulk loading or unloading.

Valid in: DATA and PROC steps (when accessing DBMS data using SAS/ACCESS software)
Categories: Bulk Loading
Data Set Control
Alias: DELIM=, DELIMIT= [Hadoop]
Default: DBMS-specific
Requirement: To specify this option, you must first specify BULKLOAD=YES.
Data source: Amazon Redshift, Aster, Google BigQuery, Greenplum, Hadoop, HAWQ, Informix, Microsoft SQL Server, Netezza, PostgreSQL, Snowflake, Spark, Yellowbrick
Notes: Support for Microsoft SQL Server and Yellowbrick was added in SAS 9.4M7.
Support for Informix and Spark was added in SAS 9.4M9.
Tip: You can also use this option with the BULKUNLOAD= option, if your interface supports that option.
See: BL_DATAFILE= data set option, BL_DELETE_DATAFILE= data set option, BL_DELIMITER= LIBNAME option, BL_FORCE_NOT_NULL= data set option, BL_FORMAT= data set option, BL_NULL= data set option, BL_OPTIONS= data set option, BL_QUOTE= data set option, BL_USE_ESCAPE= data set option, BL_USE_PIPE= data set option, BULKLOAD= data set option, BULKUNLOAD= LIBNAME option, BULKUNLOAD= data set option

Syntax

BL_DELIMITER='any-single-character'

Details

Overview

Here is when you might want to use this option:

  • to override the default delimiter character that the interface uses to separate columns of data that are transferred to or retrieved from the DBMS during bulk loading. For Netezza, this also applies to bulk unloading.
  • if your character data contains the default delimiter character, to avoid any problems while parsing the data stream

You must ensure that the characters that are assigned to BL_DELIMITER= and BL_QUOTE= are different.

DBMS Specifics

Amazon Redshift: The default is the bell character (ASCII 0x07).

Aster: The default is /t (the tab character).

Google BigQuery: The default is the bell character (ASCII 0x07).

Greenplum: The default is the pipe symbol (|).

Hadoop and Spark in HDFS: The default is \001 (Ctrl-A). To change the default delimiter, specify a value as either a single character or three-digit decimal ASCII value between 001 and 127. The value represents the ASCII value of the delimiter that you want to use. You cannot use other typical SAS or UNIX formats such as '\001', 0x01 or '01'x because these do not work. Also, for such procedures as APPEND, SQL, or INSERT, the existing delimiter of the base table—the one being appended to—overrides any specified value for the DELIMITER= option. Otherwise, data corruption would result because the original and appended parts of the resulting table would use different delimiters.

HAWQ: The default is the pipe symbol (|).

Informix: The default is the pipe symbol (|).

Microsoft SQL Server: The default is the bell character (ASCII 0x07).

Netezza: You can use any 7-bit ASCII character as a delimiter. The default is the pipe symbol (ǀ). To use a printable ASCII character, enclose it in quotation marks (for example, BL_DELIMITER="|"). However, to use an extended character, use the three-digit decimal number representation of the ASCII character for this option. For example, set BL_DELIMITER=202 to use ASCII character 202 as a delimiter. You must specify decimal number delimiters as three digits even if the first two digits would be zero. For example, specify BL_DELIMITER=003, not BL_DELIMITER=3 or BL_DELIMITER=03.

PostgreSQL: The default is the pipe character (|).

Spark in Databricks: The default is the comma character (,).

Yellowbrick: The default is the pipe symbol (|).

Examples

Example 1: Override the Default Pipe Delimiter

Data in Testdel data set contains the pipe character. Use the BL_DELIMITER= data set option to override the default ‘|’ pipe delimiter in PROC APPEND.

data work.testdel;
   col1='my|data';col2=12;
run;

/* Use a comma to delimit data */
proc append base=netlib.mydat(BULKLOAD=YES BL_DELIMITER=',')
    data=work.testdel;
run;

Example 2: Override the Default Hadoop Delimiter

data db.joeapp (delim=007); set db.JoeTable2; run;
data db.joeapp (delim="127"); set db.JoeTable2; run;
data db.joeapp (delimit=#); set db.JoeTable2; run;
data db.joeapp (delimit="#"); set db.JoeTable2; run;

proc sql;
  create table db.joeapp (delim='#') as select * from db.JoeTable2;
quit;
Last updated: February 3, 2026