首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi - Firebird数据迁移-不同字符集

Delphi - Firebird数据迁移-不同字符集
EN

Stack Overflow用户
提问于 2013-09-12 13:38:13
回答 1查看 1.1K关注 0票数 2

我需要将数据从不同的旧数据库迁移到新的数据库(用Firebird2.5上的IBExpert创建)。我正在使用FIBPlus组件。现在我知道旧的varchars和blob文本在不同的字符集和排序规则中(大多数是WIN1252)。

DBImport(从中获取数据的数据库)具有以下属性:

代码语言:javascript
复制
  pFIBDBBase.DBName := path_to_the_database_file;
  pFIBDBBase.ConnectParams.UserName := 'SYSDBA';
  pFIBDBBase.ConnectParams.Password := 'masterkey';
  pFIBDBBase.ConnectParams.CharSet := 'NONE';
  pFIBDBBase.SQLDialect := 3;

DBNew(新数据库)具有以下属性:

代码语言:javascript
复制
  pFIBDBSecond.ConnectParams.UserName := 'SYSDBA';
  pFIBDBSecond.ConnectParams.Password := 'masterkey';
  pFIBDBSecond.ConnectParams.CharSet := 'UTF8';
  pFIBDBSecond.SQLDialect := 3;

我通过使用TOndrej 这里提供的SQL获得字段定义。

在新数据库中,现在相同的字段是UTF8。

我的问题是:如果我使用FieldByName('etc').AsString从旧数据库读取数据,使用ParamByName('etc').AsString填充新数据库,那么字符串和文本blob数据是否是相同的(不管DBImport字段的字符集如何)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-12 19:58:55

2011年,我对一个带有Delphi和IBDac组件的Interbase 2007数据库做了同样的工作。

自2011年12月以来,我们一直在与新的UTF-8数据库合作,我还没有看到从无数据库迁移到UTF-8数据库的任何问题。

我不会保证100%,但看起来转换是完美无缺的。

因为所有数据集(FIBPlus或IBDac)或从原始TDataset继承过来的数据集,AsString都应该使用一些for但是组件,所以如果它与IBDac一起工作,那么对于FIBPlus也应该是同样的工作方式。

您还可以使用IBExpert对新数据库中的新表进行插入,并从旧数据库中的旧表中选择一个选项,IBExpert将负责字符串转换。这对我来说不是一种选择,因为IBExpert不会为Interbase这样做。您可以在http://ibexpert.net/ibe/index.php?n=Doc.ConvertYourFirebirdApplicationsToUnicode上找到有关这方面的更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18765883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档