我正在尝试将多个相当大的访问数据库[8个数据库中的大约20万条记录]重新创建到一个SQLite数据库中,然后链接到我的主MS访问数据库中的数据[充满用户输入的数据和链接到所有大桌子和东西]
我可以在SQLite中创建大表格,Access可以链接到它,调出表格,但所有字段类型都以Memo形式出现,当然不能加入
大多数字段都作为SQLIte中的文本字段
有什么方法可以避免它们作为备注字段链接?
所以,大部分字段都是字母数字,我把它们全部作为Text,因为它们主要是我链接的ID字段,它们都是直接来自Salesforce的CSV提取,下面是最小的,这些都是通常导入访问作为文本字段,在SQLite中它们作为文本字段导入,但从SQLite链接到访问,它们作为备忘录出现
示例数据
QVariantMap
我加入的文字字段是9,12 15或18位字母数字,总是,它们总是ID字段,字母和数字的混合
答案 0 :(得分:1)
这有点令人困惑。
根据Whats the best SQLite data type for a long string,SQLite只有一个文本数据类型(TEXT),没有长度限制。
但是当我使用
在新的SQLite数据库中创建表时sqlite> create table t1 (id integer primary key, txt varchar(20));
并通过ODBC将该表格链接到Access,txt
列的数据类型为Text(20)
。我可以参加那个专栏
另一方面,TEXT
列链接为Memo
。
所以:由于您自己创建SQLite数据库,我建议将文本字段创建为varchar(255)
或更小。
但请注意:在我的示例表中,我可以愉快地插入比20个字符更大的字符串:
sqlite> insert into t1 values (7, 'dings');
sqlite> insert into t1 values (8, 'dingsaaaaabbbbbccccc');
sqlite> insert into t1 values (9, 'dingsaaaaabbbbbcccccddddd');
sqlite> select * from t1;
7|dings
8|dingsaaaaabbbbbccccc
9|dingsaaaaabbbbbcccccddddd
但在Access中我只得到20个字符:
id txt
7 dings
8 dingsaaaaabbbbbccccc
9 dingsaaaaabbbbbccccc
因此我推荐varchar(255)
,即使你的字符串会小得多。
答案 1 :(得分:0)
我将MS-Access 2010数据库与链接的SQL表组合在一起 - 体验与您相同的效果。
我能够绕过它的唯一方法是为我想要加入的每个表创建查询。对于每个固定长度的文本字段,我使用Left$
函数创建一个新字段。
然后,不要直接加入您的SQLITE表,而是使用这些查询将链接字段与常规Access表连接起来。
因此,对于上面的示例,您可以将这些字段添加到查询中
LinkID: Left$([ID], 18)
LinkCreatedByID: Left$([CreatedById], 18)
LinkOwnerId: Left$([OwnerId], 18)
LinkName: Left$([Name], 9)
希望有所帮助