Last active
November 4, 2019 14:56
-
-
Save Eihen/6c4b7a443384eaf8b34496f9c22b9336 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
const fs = require('fs'); | |
let table = process.argv[2]; | |
let coluna = process.argv[3]; | |
let idColumn = process.argv[4]; | |
let id = process.argv[5]; | |
let buffer = fs.readFileSync(process.argv[6]); | |
let parts = buffer.toString().match(/[\s\S]{1,2000}/g); | |
let clobText = parts.map(p => "TO_CLOB('" + p.replace(/'/g, "''").replace(/&/g, "' || chr(38) || '") + "')").join(" || "); | |
let writer = fs.createWriteStream(process.argv[7]); | |
writer.write("DECLARE\n"); | |
writer.write(" c clob;\n"); | |
writer.write(" b blob;\n"); | |
writer.write(" amount INTEGER := DBMS_LOB.lobmaxsize;\n"); | |
writer.write(" dest_offset INTEGER := 1;\n"); | |
writer.write(" src_offset INTEGER := 1;\n"); | |
writer.write(" blob_csid INTEGER := nls_charset_id('UTF8');\n"); | |
writer.write(" lang_context INTEGER := DBMS_LOB.default_lang_ctx;\n"); | |
writer.write(" warning INTEGER := 0;\n"); | |
writer.write("BEGIN\n"); | |
writer.write("\n"); | |
writer.write("dbms_lob.createtemporary(b, TRUE);\n"); | |
writer.write("c := " + clobText + ";\n"); | |
writer.write("DBMS_LOB.ConvertToBlob(b, c, amount, dest_offset, src_offset, blob_csid, lang_context, warning);\n"); | |
writer.write(" UPDATE " + table + "\n"); | |
writer.write(" SET " + coluna + " = b \n"); | |
writer.write(" WHERE " + idColumn + " = '" + id + "';\n") | |
writer.write("END;"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment