.unl文件的命名约定

时间:2016-05-17 11:42:22

标签: export informix

我想了解在我的Informix数据库上使用.unl后生成的dbexport文件的命名约定适用的规则是什么。

我理解:

    +每个文件引用不同的表
 
    +每个文件使用5个字母和5个数字(例如:tbabc01234.unl,如果表名为tbabcdef)。
 
    + 5个字母是表名的前5个字母。
 
    +如果表名少于5个字母,则用下划线填写(例如:tby__01234.unl,如果表名为tby

我想了解5个数字是什么意思。有没有办法保证列表按字母顺序生成?

1 个答案:

答案 0 :(得分:2)

卸载文件中使用的5位数字是表格的tabid

我不相信有办法保证列表按字母顺序生成。

The dbexport and dbimport utilities

要获取表的tabid,请查询systables系统目录表:

SELECT  tabname, tabid
FROM    systables
WHERE   tabname = '<TABNAME>';

对于给定的列表:

SELECT  tabname, tabid
FROM    systables
WHERE   tabname IN (
            '<TABNAME1>',
            '<TABNAME2>',
            '<TABNAME3>',
            ...
        )
ORDER BY tabid;

对于所有用户表:

SELECT  tabname, tabid
FROM    systables
WHERE   tabid > 99 
        AND tabtype = 'T'
ORDER BY tabid;

毋庸置疑,您可以按tabid反转搜索:

SELECT  tabname, tabid
FROM    systables
WHERE   tabid = '<TABNAME>';

SELECT  tabname, tabid
FROM    systables
WHERE   tabid IN (
            101,
            102,
            103,
            ...
        )
ORDER BY tabid;

一种映射方式是:

SELECT  tabname, 
        tabid,
        RPAD(SUBSTR(tabname,0, 5), 5, '_')||tabid||'.unl' AS unl_file, 
FROM    systables
WHERE   tabid > 99 
        AND tabtype = 'T'
ORDER BY tabid;

对于这是一个好方法的问题,它取决于一些问题:

  • 源数据库有多少个表?
  • 您打算迁移多少个表?
  • 该过程应考虑表与数据之间的关系(PK / FK / Triggers /...).
  • 请记住,当使用ss选项时,存储子句会提到dbspace。
  • ...

例如,如果您有一个包含1000个表的数据库并且只想要10个,那么从dbschema中提取模式然后执行unload数据会更容易。

以下是引擎附带的Data migration utilities列表的链接。