22 lines
555 B
TypeScript
22 lines
555 B
TypeScript
// https://www.postgresql.org/docs/current/sql-copy.html#id-1.9.3.55.9.2
|
|
const rg_octal = /^\\([0-7]{1,3})/;
|
|
const rg_hex = /^\\x([0-9a-fA-F]{1,2})/;
|
|
|
|
export function copy_fmt(cols: readonly string[]) {
|
|
let s = "";
|
|
for (let i = 0, n = cols.length; i < n; i++) {
|
|
if (i !== 0) s += "\t";
|
|
s += copy_fmt_escape(cols[i]);
|
|
}
|
|
return s;
|
|
}
|
|
|
|
export function copy_fmt_escape(s: string) {
|
|
return s
|
|
.replaceAll("\\", "\\\\")
|
|
.replaceAll("\n", "\\n")
|
|
.replaceAll("\r", "\\r")
|
|
.replaceAll("\t", "\\t")
|
|
.replaceAll("\0", "\\000");
|
|
}
|