加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

将CSV文件导出至SqlServer的三种方法

发布时间:2020-12-12 15:40:15 所属栏目:MsSql教程 来源:网络整理
导读:? 1.如果服务端在本地,可以用下列语句导入,很省事 InsertStr:=Format('BULK INSERT DRYB_FYMX FROM %s WITH (FIELDTERMINATOR =%s,ROWTERMINATOR = %s)',[QuotedStr(CsvFile),QuotedStr(','),QuotedStr('/n')]); ExecAdoSQL(DM.HisConn,InsertStr); 2.可以用

?

1.如果服务端在本地,可以用下列语句导入,很省事 InsertStr:=Format('BULK INSERT DRYB_FYMX FROM %s WITH (FIELDTERMINATOR =%s,ROWTERMINATOR = %s)',[QuotedStr(CsvFile),QuotedStr(','),QuotedStr('/n')]);
ExecAdoSQL(DM.HisConn,InsertStr); 2.可以用字符串数据,但是字符串字段值中如果有逗号就造成插入数据列不一致,切记 if FileExists(CsvFile) then begin CsvList:=TStringList.Create; CsvStr:= TStringList.Create; SqlStrs:=TStringList.Create; CsvList.LoadFromFile(CsvFile); HeadStr:='INSERT INTO [DRYB_FYMX](定点医疗机构编号,流水号,处方号,单据号,' +'医院收费项目内码,医院收费项目名称,中心收费项目内码,中心收费项目名称,' +'交易类型,个人编号,处方日期,结算日期,收费类别,报销类别,收费项目种类,' +'单价,数量,金额,自理金额,医院承担金额,最高限价,自费金额,自付比例,' +'审批编号,处方药标志,剂型,规格,每次用量,使用频次,医生姓名,用法,' +'单位,处方医师,科别名称,执行天数,有效标志,退费流水号,全额自费标志,' +'结算标志,业务周期号,发送方交易流水号,草药单复方标志,跨段标记,' +'基本医疗部分,身份证号,医保属类 )'; for i:=0 to CsvList.Count-1 do begin CsvStr.Delimiter:=#9; CsvStr.DelimitedText:= CsvList[i]; ValueStr:='Values('; for j:=0 to CsvStr.Count-1 do begin if (j=11) then Continue; if (j=13) then continue; if j<>0 then ValueStr:=ValueStr+','+QuotedStr(Trim(CsvStr[j])) else ValueStr:=ValueStr+QuotedStr(Trim(CsvStr[j])); end; ValueStr:=ValueStr+')'; Sql:=HeadStr+ValueStr; SqlStrs.Add(Sql); end; CsvList.Free; CsvStr.Free; end; SqlStrs.SaveToFile('D:/123.txt'); 3. 因此提取CSV文件数据最好的办法是: if FileExists(CsvFile) then
begin
CsvConn.Connected:=False;
CsvConn.ConnectionString:=Format('Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'
+'Data Source=%s;Mode=Share Deny None;'
+' Extended Properties="text;HDR=No;FMT=Delimited";'
+'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'
+'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=96;'
+'Jet OLEDB:Database Locking Mode=0;'
+'Jet OLEDB:Global Partial Bulk Ops=2;'
+'Jet OLEDB:Global Bulk Transactions=1;'
+'Jet OLEDB:New Database Password="";'
+'Jet OLEDB:Create System Database=False;'
+'Jet OLEDB:Encrypt Database=False;'
+'Jet OLEDB:Don''t Copy Locale on Compact=False;'
+'Jet OLEDB:Compact Without Replica Repair=False;'
+'Jet OLEDB:SFP=False',[ExtractFilePath(CsvFile)]);
CsvConn.Connected:=True;
CsvQuery.Close;
CsvQuery.SQL.Text:=Format('select * from %s',[ExtractFileName(CsvFile)]);
CsvQuery.Open;
SqlStrs:= TStringList.Create;
HeadStr:='INSERT INTO [DRYB_FYMX](定点医疗机构编号,'
+'医院收费项目内码,'
+'交易类型,'
+'单价,'
+'审批编号,'
+'单位,'
+'结算标志,'
+'基本医疗部分,医保属类 )'; CsvQuery.First; for i:=0 to CsvQuery.RecordCount-1 do
begin
ValueStr:='Values(';
for j:=0 to CsvQuery.FieldCount-1 do
begin
if j<>0 then
ValueStr:=ValueStr+','+QuotedStr(CsvQuery.Fields[j].AsString)
else
ValueStr:=ValueStr+QuotedStr(CsvQuery.Fields[j].AsString);
end;
ValueStr:=ValueStr+')';
Sql:=HeadStr+ValueStr;
SqlStrs.Add(Sql); CsvQuery.Next; end; Common.TransData(DM.Conn,SqlStrs);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读