gpt4 book ai didi

mysql - mdb-export 更改每一行的 GUID

转载 作者:行者123 更新时间:2023-11-29 21:33:37 24 4
gpt4 key购买 nike

我正在 FreeBSD 上使用 mdb-toolsMicrosoft Access DB 转换为 MySQL

脚本如下所示(to_mysql.sh):

#!/usr/local/bin/bash
echo "DROP TABLE IF EXISTS Student;"

mdb-schema -T Student $1 mysql

mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql $1 Student

我使用它的方式如下:

./to_mysql.sh accessDb.MDB > data.sql

问题是 mdb 中所有行的 GUID(第二列)都发生了变化。

在 Access 数据库中,一行如下所示:

|{D115266B-D5A3-4617-80F8-7B80EE3022DA}|2013-06-11 08.54.14|2015-12-17 14.57.01|2|2||||||0|111111-1111||Nameson|Name|||||3|||SA|0||||0|Gatan 2|222 22|1234 567

当我使用上面的脚本将其转换为 MySQL 时,它看起来像这样:

INSERT INTO `Student` (
`UsedFields`,`GUID`,`Changed`,`ChangedLesson`,`AccessInWebViewer`,`VisibleInWebViewer`
,`PasswordInWebViewer`,`Language`,`UserMan`,`SchoolID`,`Owner`,`DoNotExport`
,`Student`,`Category`,`LastName`,`FirstName`,`Signature`,`Sex`
,`Phone`,`SchoolType`,`Grade`,`EMail`,`Program`,`IgnoreLunch`
,`ExcludedTime`,`Individual timetable`,`Adress(TEXT) `,`Postnr(TEXT) `
,`Ort(TEXT) `
)
VALUES (
NULL,"{266bd115-d5a3-4617-f880-807b30eeda22}","2013-06-11 08:54:14"
,"2015-12-17 14:57:01",2,2,NULL,NULL,NULL,NULL,NULL,0,"111111-1111"
,NULL,"Nameson","Name ",NULL,NULL,NULL,NULL,"3",NULL,"SA"
,0,NULL,0,"Gatan 2","222 22","1234 567"
);

除了 GUID 列之外,一切都是正确的,它更改为:

{D115266B-D5A3-4617-80F8-7B80EE3022DA}

{266bd115-d5a3-4617-f880-807b30eeda22}

看起来所有字符都重新排序,但我不知道为什么。

有谁知道为什么以及如何防止这种情况发生?

谢谢!

最佳答案

似乎是 mdbtools 中的字节顺序问题。解决方法是创建一个小的 sed 脚本“mdb_fixguids”,类似于

#!/bin/sed -f
s/{\(....\)\(....\)-\(....-....-....-............\)}/{\2\1-\3}/g;
s/{\(........-....-....\)-\(..\)\(..\)-\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)}/{\1-\3\2-\5\4\7\6\9\8}/g

将其放入路径中并在转换管道中使用它,类似于

./to_mysql.sh accessDb.MDB | mdb_fixguids > data.sql

顺便说一句:)这是我第一次需要 sed 中所有可能的反向引用

关于mysql - mdb-export 更改每一行的 GUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com