Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Загрузка BCP файла через \COPY
|
|||
|---|---|---|---|
|
#18+
Добрый день! Встала задача, перевести MS SQL базу на PostgreSQL. Все вроде бы шло хорошо, до момента загрузки данных в таблицы. Если по пунктно. 1) Postgres установлен на SLES 11 2) Создана база Вот так: CREATE DATABASE "FA" WITH OWNER = postgres ENCODING = 'WIN1251' TABLESPACE = pg_default LC_COLLATE = 'ru_RU.cp1251' LC_CTYPE = 'ru_RU.cp1251' CONNECTION LIMIT = -1; 3) Созданы типы данных 4) Создана таблица 5) Выгружаю данные из таблицы call bcp.exe ms_to_postgresql.dbo.tUser out tUser.txt -c -t"|" -r"\n" -CACP -S*** -Usa -P*** 6) Затем загружаю данные через \copy (Вот тут то загрузка и падает) Выяснил причину падения загрузки В таблице в одном из полей имеется символ 0x00 Его я получаю селектом на MS SQL select len(AlterName) as LenAlterName,ascii(substring(AlterName,1,1)) as ASCII, AlterName from tUser where len(AlterName)=0 and ascii(substring(AlterName,1,1)) IS NULL LenAlterName ASCII AlterName 0 NULL 0 NULL 0 NULL 0 NULL 0 NULL Вот этот NULL и есть 0x00 Остальные же строки в этом столбце абсолютно нормальные и в них получается пробел. LenAlterName ASCII AlterName 0 32 0 32 0 32 Т.к таких таблиц у меня достаточно много, нужна ваша помощь с загрузкой. И вот при выгрузке через BCP и просмотре через Notepad++ я вижу следующее Вот проблема в том что BCP эти строки выгружет вот так как на картинке. А \copy эти NUL пропускает и пытается вставить другое значение в это поле. Уже нет мыслей, что делать т.к есть и большие таблицы в которых руками такие места затереть не удасться т.к они весят более 100GB. PS. Если же Postgre ставить на WIndows и создавать вот так базу CREATE DATABASE "FA" WITH OWNER = postgres ENCODING = 'WIN1251' template = template0 LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' TABLESPACE = pg_default CONNECTION LIMIT = -1; Ошибок при загрузке нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2016, 10:40 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39353422&tid=1996853]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 312ms |
| total: | 553ms |

| 0 / 0 |
