通用算法问题???(200分)

  • 主题发起人 主题发起人 Fucool
  • 开始时间 开始时间
F

Fucool

Unregistered / Unconfirmed
GUEST, unregistred user!
以下字符串,以逗号分隔;第一位标识表名,
假定第一个表有5个字段,
哪么第一个字符串对应有5条记录(逗号2到6,如下依次)
1,,xxc,78,787,78,78,78,727,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
2,,67,78,787,78,78,78,77,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
3,677,,78,787,78,78,78,77,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
4,566g,,78,787,78,78,78,77,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
5,ghj,,78,787,78,78,78,77,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
6,bb,,78,xx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
但现有的问题是我不知道用户的表字段个数,也不知道字段类型,只有字符串是固定的
要把这样很多的字符串写入数据库中,
请大家给个思路,最好有源码???

 
使用SQL SERVER中的数据导入工具吧
 
不可以用SQL工具,因我的字符串是通过串行口
不定时的识别数据采集设备的数据的。
谢谢!
 
不需要工具:
看看我的代码:/
var
tempstrlist : Tstrings;
begin
tempstrlist := Tstringlist.create;
tempstrlist.commatext := str1;
while tempstrlist.count>4do
begin
insert into table (f1,f2,f3,f4,f5) values (tempstrlist[0],tempstrlist[1],tempstrlist[2],tempstrlist[3],tempstrlist[4])
for i :=0 to 4do
tempstrlist.delete(0);
end;
str1就是你说的
1,,xxc,78,787,78,78,78,727,78.3,123.5,,343,xxx,cccc,2.34,39.35,3.9,2.34,0.78,3.85,0.783,0.6175,0,0,0,0,0,0,,37234.7243055556,37251.7259606481,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
具体实现的代码你自己去想
 
无法搞定???
 
問題在於你未知有多少個字段。當然也就以知道這些數據是干什麼用的了。
也就是講:在事前未能得知數據格式,只知道這些字符串。
1:可以直接將全部字符串存入一個字段中。供另外的程序分析。
2:用格式化輸入( C函數sscanf )可以輕易分解這些字符串,讀入到數據字段中或
內存變量中。
還是那句老話,數據要自己標識自己,那樣才方便讀懂它。關鍵數據不能馬虎,最好
加入CRC校驗碼,或MD5碼。
加入一個MD5碼(16Bytes),能識別讀出來的數據是否正確(99.99%以上正確)。(CRC碼(100%正確)占太多空間了)
加入一個自我識別碼(4~16Bytes),能依據該識別碼,判斷數據格式,就少了很多麻煩事。
建議前32字節識別用。(可在這裡面寫入編碼方法(壓縮方法),
能更新高效的壓縮方法,而不用擔心版本兼容性問題)
好久沒你消息了。。。。
請發信到163.net, 我很少查163.com的信。
 
后退
顶部