Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Загрузка данных командой COPY / 16 сообщений из 16, страница 1 из 1
05.09.2018, 12:41
    #39698385
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Гружу данные в базу 10.5 командой COPY
copy od_wiring ID,PLAN_ID,WIRDATE,NAME,COMMENT,D_REST,K_REST,EQ_,O_STEP,CHANGED_BY,IS_PLAN,BLANKS,DOL,LINK,TAG,D_SUMMA,K_SUMMA,D_AMOUNT,K_AMOUNT) from '/var/lib/pgsql/10/backups/1/OD_WIRING.sql' DELIMITER '|' CSV ENCODING 'WIN1251';

Вываливается на строке 235508 с диагностикой
COPY od_wiring, line 235508, column comment: "Уведомление СД 585 от 18.05.05, п/п №107 и 109 (налог)|123425|200255|200000..."

Что ей не нравится?
Вот часть файла, строка начинается с 2513837, третья по счету:

2513835|128|18.05.2005 11:58:16|Начисление сумм по выкупу паев|Уведомление СД "585 от 18.05.05, п/п №107 и 109 (налог)|123425|200255|200000|271036|55|Fх..во200000|200000|199.59084|199.59084
2513836|128|18.05.2005 11:58:16|Учет положительной разницы между ценой реализации и приобретения|Уведомление СД "585 от 18.05.05, п/п №107 и 109 (налог)|123439|200255|17378.38|271036|55|Fх..во17378.38|17378.38|0|0
2513837|128|18.05.2005 11:58:16|Начисление скидки|Уведомление СД "585 от 18.05.05, п/п №107 и 109 (налог)|200255|170602|0|271036|55|Fх..во0|0|0|0
2513838|129|18.05.2005 11:58:16|Снятие паев с учета|Погашение (выкуп) паев|124777|124776|0|271036|55|Fх..во199.59084|199.59084|0|0
2513839|128|18.05.2005 11:58:16|Задолженность по ДС от фонда|Погашение (выкуп) паев|200256|200257|217378.38|271036|55|Fх..во217378.38|217378.38|0|0
...
Рейтинг: 0 / 0
05.09.2018, 13:31
    #39698441
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342,

Вы не привели текст ошибки. Поэтому ничего сказать нельзя.
То что вы привели - расширенная информация о том где ошибка произошла но не о том в чем она состоит.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
05.09.2018, 13:36
    #39698453
Ы2
Ы2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342COPY od_wiring, line 235508, column comment: "Уведомление СД 585 от 18.05.05, п/п №107 и 109 (налог)|123425|200255|200000..."
Что ей не нравится?
Обычно оно пишет чуть больше, напр., missing data for column xxx. М.б. стоит проверить на предмет непарных кавычек и т.п.
...
Рейтинг: 0 / 0
05.09.2018, 14:24
    #39698501
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Все, что он сказал. в логе еще меньше.
(Это я разделитель сменил с | на ~)
Если удаляю эту строку, копирование идет дальше.

postgres=# copy od_wiring (ID,PLAN_ID,WIRDATE,NAME,COMMENT,D_REST,K_REST,EQ_,O_STEP,CHANGED_BY,IS_PLAN,BLANKS,DOL,LINK,TAG,D_SUMMA,K_SUMMA,D_AMOUNT,K_AMOUNT) from '/var/lib/pgsql/10/backups/1/OD_WIRING.sql' DELIMITER '~' CSV ENCODING 'WIN1251';
ERROR: value too long for type character varying(255)
КОНТЕКСТ: COPY od_wiring, line 235508, column comment: "Уведомление СД 585 от 18.05.05, п/п №107 и 109 (налог)~123425~200255~200000..."
postgres=#


А кавычки есть и в предыдущих строках - их ест.
...
Рейтинг: 0 / 0
05.09.2018, 14:35
    #39698514
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Почитайте внимательно:
alex342Все, что он сказал. в логе еще меньше.
(Это я разделитель сменил с | на ~)
Если удаляю эту строку, копирование идет дальше.

postgres=# copy od_wiring (ID,PLAN_ID,WIRDATE,NAME,COMMENT,D_REST,K_REST,EQ_,O_STEP,CHANGED_BY,IS_PLAN,BLANKS,DOL,LINK,TAG,D_SUMMA,K_SUMMA,D_AMOUNT,K_AMOUNT) from '/var/lib/pgsql/10/backups/1/OD_WIRING.sql' DELIMITER '~' CSV ENCODING 'WIN1251';
ERROR: value too long for type character varying(255)
КОНТЕКСТ: COPY od_wiring, line 235508, column comment: "Уведомление СД 585 от 18.05.05, п/п №107 и 109 (налог)~123425~200255~200000..."
postgres=#


А кавычки есть и в предыдущих строках - их ест.
...
Рейтинг: 0 / 0
05.09.2018, 14:38
    #39698520
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
В этой строке для поля COMMENT от разделителя до разделителя 65 символов.
...
Рейтинг: 0 / 0
05.09.2018, 15:14
    #39698560
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
COPY хватает все между парами кавычек ", начиная с предыдущей строки!!!
Как мне импортировать текст с кавычками?
...
Рейтинг: 0 / 0
05.09.2018, 15:18
    #39698564
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342В этой строке для поля COMMENT от разделителя до разделителя 65 символов.

В общем проблема у вас в входном файле и в его формате.
Что именно там не так - без hex dump посимвольного этой строки (и нормальных строк рядом) не понять.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
05.09.2018, 15:23
    #39698570
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Maxim Boguk,

IMHO просто файл НЕ CSV. Почему в команде COPY указали/используют формат CSV, а не просто TEXT - мне не очень понятно.
...
Рейтинг: 0 / 0
05.09.2018, 15:27
    #39698573
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342COPY хватает все между парами кавычек ", начиная с предыдущей строки!!!
Как мне импортировать текст с кавычками?
даблквот от значащих кавыков при формировании файла.


или параметр quote в значение не встречающееся в текстах
https://www.postgresql.org/docs/10/static/sql-copy.html
...
Рейтинг: 0 / 0
05.09.2018, 15:29
    #39698574
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Я уже все HEX просмотрел. А когда удалил эту строку и все импортировалось, увидел, что в поле COMMENT влетело все от кавычки во второй строке "585... и до конца строки.
Дело в кавычках! Так подскажите, как с ними быть?
...
Рейтинг: 0 / 0
05.09.2018, 15:34
    #39698579
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Если я задваиваю кавычки, они вообще не появляются в тексте - СД 585. Без кавычки перед цифрами 585.
...
Рейтинг: 0 / 0
05.09.2018, 15:42
    #39698585
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342Если я задваиваю кавычки, они вообще не появляются в тексте - СД 585. Без кавычки перед цифрами 585.

А просто гугл и поискать - религия не позволяет?
Правильный ответ был "Почему в команде COPY указали/используют формат CSV, а не просто TEXT - мне не очень понятно. "
Он же за 2 минуты гуглом например по ссылке находится
https://stackoverflow.com/questions/20402696/is-it-possible-to-turn-off-quote-processing-in-the-postgres-copy-command-with-cs
(2й ответ).
Вы сами себе в ногу стреляете указывая CSV где все очень непросто с quoting (да еще и стандарта внятного нет)

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
05.09.2018, 15:42
    #39698586
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342Если я задваиваю кавычки, они вообще не появляются в тексте - СД 585. Без кавычки перед цифрами 585.строковое поле Должно быть закавычено (экранирующими кавыками) . значимые кавыки должны быть задвоены (внутри целиком закавыченного поля).

или используйте КВОТЕ '^' для теста
...
Рейтинг: 0 / 0
05.09.2018, 15:46
    #39698590
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
alex342Я уже все HEX просмотрел. А когда удалил эту строку и все импортировалось, увидел, что в поле COMMENT влетело все от кавычки во второй строке "585... и до конца строки.
Дело в кавычках! Так подскажите, как с ними быть?
Вставьте одну строчку руками через INSERT с кавычками в нужных местах.
А затем командой COPY tbl TO stdout посмотрите что должно быть на входе.
...
Рейтинг: 0 / 0
06.09.2018, 11:04
    #39698890
alex342
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных командой COPY
Maxim Boguk, cпасибо!

Сделал файл в формате txt. И нет проблем ни с кавычками, ни с NULL.
65 млн строк за 12 минут в табличку.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Загрузка данных командой COPY / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]