Informix (11.7) DB를 PostgreSQL (9.2)으로 마이그레이션 중입니다. 한 가지 문제가 있습니다 : Informix에서 PostgreSQL (9.2)으로 BLOB (이미지)를 이동하는 방법은 무엇입니까? 미리 감사드립니다.Informix에서 Postgres 로의 Blob의 마이그레이션 데이터
1
A
답변
1
자이 썬과 JDBC를 사용하여 다양한 데이터베이스간에 이러한 변환을 수행했습니다.
CLASSPATH
의 Informix 및 PostgreSQL JDBC 드라이버 만 있으면됩니다.
#!/usr/bin/env jython
# -*- coding: utf8 -*-
from java.sql import DriverManager
from java.lang import Class
Class.forName("com.informix.jdbc.IfxDriver")
Class.forName('org.postgresql.Driver')
def copy_table(db_from, db_to):
col_count = 2
insert_stmt = db_to.prepareStatement('INSERT INTO _blob_test (id, image) VALUES (?, ?)')
pstm2 = db_from.createStatement()
pstm2.setFetchSize(10000)
rs_in = pstm2.executeQuery('SELECT * FROM _blob_test')
try:
batch_buffer = 0
batch_size = 100
while (rs_in.next()):
for i in range(1, col_count + 1):
insert_stmt.setObject(i, rs_in.getObject(i))
insert_stmt.addBatch()
batch_buffer += 1
if (batch_buffer % batch_size == 0):
insert_stmt.executeBatch()
batch_buffer = 0
if (batch_buffer > 0):
insert_stmt.executeBatch()
finally:
rs_in.close()
pstm2.close()
db_from = DriverManager.getConnection('jdbc:informix-sqli://informix-test:9088/infdb:informixserver=ol_testifx;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250', 'informix', '12345')
db_to = DriverManager.getConnection('jdbc:postgresql://pg-test:5490/pg_test?stringtype=unspecified', 'postgres', '12345')
copy_table(db_from, db_to)
0
내가 아는 대답이 늦은 :
-- Informix
CREATE TABLE _blob_test (
id integer PRIMARY KEY,
image BYTE
)
-- PostgreSQL
CREATE TABLE _blob_test (
id integer PRIMARY KEY,
image BYTEA
)
그런 다음 데이터를 복사 할 JDBC를 getObject()/setObject()
방법을 사용할 수 있습니다
BYTE
컬럼 및 PostgreSQL을 테이블
BYTEA
열이 있습니다 그러나 이것은 해결책을 찾는 다른 사람들을 도울 수 있습니다.
우리 회사에서도 비슷한 마이그레이션을 수행했습니다.
우리는 SQL-workbench라는 도구를 사용하여 바이너리를 마이그레이션하기 위해 데이터 pumper (메뉴 도구)를 사용했습니다. 데이터 pumper를 사용하면 원본 DB에서 대상 DB로 데이터를 복사 할 수 있습니다. DBMS는 다를 수 있습니다 (이 경우 Informix 및 Postgres).
두 드라이버를 모두 "파일> 드라이버 관리"에 등록하고 2 개의 프로파일을 작성해야합니다. Informix DB를 대상으로하는 소스 프로파일과 Postgres DB를 대상으로하는 대상 프로파일. 그러면 프로파일이 Data pumper에서 선택됩니다. 복사 할 테이블이 여러 개인 경우 Wbcopy 기능 사용에 대한 설명서를 참조하십시오. 매우 유용합니다.
데이터 유형이 포스트그레스입니까? 아니면 특별히 문제가 있습니까? 찾고있는 데이터 유형은 postgres의 bytea입니다. – mistapink
비 blob 데이터를 PostgreSQL으로 어떻게 이전하고 있습니까? PostgreSQL은 blob 데이터를로드하기 위해 어떤 형식을 사용합니까? 얼룩이있는 테이블을 얼마나 많이 옮깁니 까? 이 테이블에 몇 개의 행이 있습니까? 방울이 얼마나 큽니까 (분, 평균, 최대)? 어떤 Informix 유형의 TEXT, BYTE, BLOB 및 CLOB를 다루고 있습니까? 그것들은 모두 블롭 유형입니다. –
@JonathanLeffler : Informix TEXT, BYTE, BLOB 및 CLOB 데이터를 저장하기위한 사양은 무엇입니까? –