Как загрузить 3MB текстовый файл построчно в столбец в PostgreSQL? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь загрузить некоторые тестовые данные в таблицу, в которой есть столбец с именем mytext, который имеет тип TEXT. У меня есть текстовый файл нового формата размером 3 МБ. Мне интересно, есть ли какой-нибудь простой и правильный способ загрузки строки строка за строкой в ​​столбец mytext вместо зацикливания в цикле for из моего клиентского языка. (каждая строка в строке).

В основном:

insert into table (column) values('a line of the text file')

Отредактировано

(1) Мой вопрос помечен как дубликат загрузки файла в формате csv. Мне нужно отредактировать это. Я не думаю, что это дубликат, потому что я не могу использовать решение, упомянутое в этом посте, и мой файл не является файлом в формате CSV. Это просто роман, и мне нужно загрузить данные только в один столбец.

(2) Я просто хочу загрузить новые данные в столбец, а затем я могу протестировать некоторые функции LIKE, FTS.

Ответы [ 2 ]

3 голосов
/ 23 июня 2019

(сначала скопируйте файл)

Вот возможность

Загрузить файл в vi

Выполнить команду для кавычек

:1,$s/'/''/g

Введите команду для вставки оператора вставки в начале

:1,$s/^/insert into table values('/

Введите команду для вставки завершающего элемента

:1,$s/$/');/

Записать файл

:w

Выйти из vi

:q

Теперь у вас есть требуемый SQL. Запустите это

1 голос
/ 25 июня 2019

На основании ответа vim от Ed Heal, существует версия sed для MacOS:

sed "s/'/''/g" novel.txt > tmp1.sql

sed "s/^/insert into table (column) values('/" tmp1.sql > tmp2.sql

sed "s/$/');/" tmp2.sql > tmp3.sql

rm tmp1.sql tmp2.sql && mv -i tmp3.sql final.sql

psql -U user dbname < final.sql &> /dev/null

Чтобы объединить все шаблоны sed в одну строку:

sed "s/'/''/g; s/^/insert into table (column) values('/; s/$/');/" novel.txt > final.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...