|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
Всем доброго дня... Столкнулся с проблемой перзагрузки данных с SybaseASE на PostgreSQL С обычными таблицами вроде разобрался, пришлось для некоторых таблиц делать VIEW которые и выгружал через BCP, в которых datetime переделывать на convert(varchar(24),datetime_field,23) и в строковых полях заменять спецсимволы на пробел и просто убирать ... str_replace(str_replace(str_replace(COMPOUND,char(0xd),''),char(0xa),''),char(0x9),'') as COMPOUND А вот с полями типа TEXT это не прокатывает ... можно их конечно convert(varchar(16384),...) но увы есть данные размером побольше (у нас там лежат всякие HTML тексты в которых встречаются и перевод строки и табуляции). Когда я переливал данные между Sybase или MSSQL то там можно задать спец. row_termintator типа вот так set BCP=C:\Sybase\OCS-15_0\bin\bcp64.exe set BCPPARAM=-S%SRV% -U%UID% -P%PSW% -A 8192 -c -t \x01 -r \x02 -Jcp1251 %BCP% %DBN%..%1 out %OUTDIR%\%1.txt %BCPPARAM% а в PostgreSQL оказалось НЕТ такого понятия как row terminator (или row delimiter) :-((( Как быть? Неужели придется писать для ЭТОГО очередную "приблуду" ? Неужели нельзя все это сделать с помощью PSQL ? PS: Данные я конечно перелил ... с помощью PowerBuilder - PipeLine ... но хотелось как то "изящней" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2021, 14:32 |
|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
_Drive_, Поскольку вы не написали как именно вы в postgresql данные загружаете и какую проблему/ошибку от базы получаете то помочь вам вряд ли кто то сможет... -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2021, 00:02 |
|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
_Drive_, Ни разу не понятно о каком терминаторе вы говорите и почему он так важен? PostgreSQL умеет работать с данными в разных кодировках, бинарными, CSV и прочими форматами. По моему опыту, работать с ним удобнее, чем с Oracle или MS SQL. Можно тут что-то найти для ваших целей: https://www.postgresql.org/download/products/1-administrationdevelopment-tools/ Также вы можете подцепить ваши таблицы из Sybase напрямую в Postgres-е через https://github.com/tds-fdw/tds_fdw ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2021, 01:25 |
|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
Всем доброго дня .. сорри забыл указать способ загрузки в Postgre вот BAT файл- set ISQL="С:\PostgreSQL\10\bin\psql.exe" %ISQL% -h 192.168.1.159 -p 5432 -U user -d myDB_dev -f %1.sql и сам SQL файл- truncate table medicine; \copy medicine from g:\\unload\\data\\medicine.txt with (delimiter E'\x1', encoding 'UTF8', NULL ''); его как параметр передаю в тот BAT файл ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2021, 07:34 |
|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
Всем доброго дня Ура получилось!!! Но пришлось выгружать ЭТУ таблицу не с SybaseASE 15.7 а с SybaseSQLAnywhere 12 у нас на обоих серверах есть жта таблица И способ выгрузки с SQLAnywhere другой вот BAT файл- set ENG=pinets_cons set HOST=192.168.1.88 set PORT=3638 set UID= set PSW= set ISQL="C:\SQL Anywhere 12\Bin64\dbisql.exe" %ISQL% -c "ENG=%ENG%;Commlinks=tcpip(host=%HOST%);UID=%UID%;PWD=%PSW%" -d1 -nogui %1.sql -onerror continue а вот SQL файл- set temporary option allow_write_client_file=On; unload table medicine into client file 'g:\unload\data\medicine.txt' format bcp delimited by '\x09' quote '' byte order mark OFF ENCODING 'UTF-8'; В результате в выходном файле в полях (LONG VARCHAR) все спец. символы были заменены на \x0a \x0d \x09 и т.д. а вот разделитель полей НОРМАЛЬНАЯ табуляция и разделитель строк - перевод строки Загрузка на PostgreSQL как и раньше через PSQL вот так .. truncate table medicine; \copy medicine from g:\\unload\\data\\medicine.txt with (format text, delimiter E'\t', encoding 'UTF8', NULL ''); PS: а для ASE я так ничего и не придумал... PS: еще нюанс - командой UNLOAD TABLE можно выгрузить только TABLE а вот VIEW нельзя... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2021, 10:42 |
|
reload table with text field from sybase ASE to Postgree
|
|||
---|---|---|---|
#18+
Еще раз доброго дня .. чтобы было понятней что за данные можно зайт на наш сайт https://aptekamos.ru/tovary/lekarstva/bovgialuronidaza-azoksimer-9104/longidaza-liofilizat-dlya-inekciyo-3000me-34449/instrukciya ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2021, 10:46 |
|
|
start [/forum/topic.php?fid=53&msg=40047811&tid=1994183]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 254ms |
total: | 371ms |
0 / 0 |