Golang и Postgresql CREATE TABLE дают мне проблемы - PullRequest
0 голосов
/ 13 сентября 2018

Использование и следование документации: https://godoc.org/github.com/lib/pq но не могу увидеть часы и часы и исследовать онлайн, чтобы найти хороший пример передачи переменных в db.Exec () Я строю программу, которая будет создавать новые таблицы в зависимости от определенных имен, введенных в аргументах команды.

db.Exec(`CREATE TABLE $1(
    ID INT PRIMARY KEY NOT NULL,
    HOST    TEXT    NOT NULL,
    PORTS   TEXT,
    BANNERS TEXT,
    JAVASCRIPT TEXT,
    HEADERS TEXT,
    COMMENTS TEXT,
    ROBOTS  TEXT,
    EMAILS  TEXT,
    CMS     TEXT,
    URLS    TEXT,
    BUSTIN  TEXT,
    VULN    TEXT
    )`,  tablename)

Но не повезло, я, очевидно, пытался изменить положение вещей, даже если я попытался построить синтаксис CREATE TABLE для строки и попытаться передать его вместо db.Exec (строка) но не повезло, ни ... кто-нибудь может мне помочь?

Спасибо

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете проверить https://golang.org/src/database/sql/sql.go?s=39599:39668#L1437, в строке 1478, что SQL-операторы будут сначала подготовлены, а затем выполнены.

В PostgreSQL подготовка действительна только для SELECT, INSERT, UPDATE, DELETE илиVALUES, https://www.postgresql.org/docs/10/static/sql-prepare.html.

Здесь вы можете использовать fmt.Sprintf из Go для поддержки создания разных таблиц и проверки имени таблицы вручную, имена таблиц SQL могут содержать много специальных символов, но вы можете сузить их,моя проверка правильности - regexp.MustCompile ("^ [a-zA-Z _] + [0-9a-zA-Z _] * $").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...