用于MS Access的SQLite数据类型

时间:2016-08-06 08:25:34

标签: sqlite ms-access-2010

我正在尝试将多个相当大的访问数据库[8个数据库中的大约20万条记录]重新创建到一个SQLite数据库中,然后链接到我的主MS访问数据库中的数据[充满用户输入的数据和链接到所有大桌子和东西]

我可以在SQLite中创建大表格,Access可以链接到它,调出表格,但所有字段类型都以Memo形式出现,当然不能加入

大多数字段都作为SQLIte中的文本字段

有什么方法可以避免它们作为备注字段链接?

所以,大部分字段都是字母数字,我把它们全部作为Text,因为它们主要是我链接的ID字段,它们都是直接来自Salesforce的CSV提取,下面是最小的,这些都是通常导入访问作为文本字段,在SQLite中它们作为文本字段导入,但从SQLite链接到访问,它们作为备忘录出现

示例数据

QVariantMap

我加入的文字字段是9,12 15或18位字母数字,总是,它们总是ID字段,字母和数字的混合

2 个答案:

答案 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)

希望有所帮助