If you are doing this from an application (VB.Net or C++ or php or whatever), then you must load the data in chunks, if the data is larger than 4000 bytes (thanks, mustaccio) OR if the data contains values that can't be sent as a string (Binary data).

The process is to take your data, split it into an array of byte "chunks" that are each somewhere less than 4000 bytes per chunk. The examples below provide ways to do this in a few languages.


[Here is a PHP example][1] from Oracle for using byte chunks.

[Here is a C++ example][2] from Stack Overflow.

[Here is a C#.Net example][3] from Code Project.

If you're doing this from scripts, check out [SQL*Loader][4].

    LOAD DATA 
    INFILE example13.dat 
    INTO TABLE EXAMPLE13 
    FIELDS TERMINATED BY ',' 
    ( EMPNO INTEGER EXTERNAL, 
    ENAME CHAR, 
    JOB CHAR, 
    MGR INTEGER EXTERNAL, 
    SAL DECIMAL EXTERNAL, 
    COMM DECIMAL EXTERNAL, 
    DEPTNO INTEGER EXTERNAL, 
    RES_FILE FILLER CHAR(60), 
    "IMAGE" BFILE(CONSTANT "ORDIMGDIR", RES_FILE) 
    )

 
If one of these examples isn't the right programming language or doesn't help you, let me know and I'll try to find you one for that language.

  [1]: https://docs.oracle.com/cd/E17781_01/appdev.112/e18555/ch_twelve_blobs.htm#TDPPH185
  [2]: https://stackoverflow.com/questions/12781553/odbc-write-blob-example-oracle-c
  [3]: https://www.codeproject.com/Articles/48619/Reading-and-Writing-BLOB-Data-to-Microsoft-SQL-or
  [4]: https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:392618837633