备份数据表为insert 脚本

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB,
Datasnap.DBClient;

type
TForm1 = class(TForm)
cds: TClientDataSet;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
procedure ExportData(const tableNames: string);
procedure ImportData(const fileName, tableNames: string);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses untDB;

procedure TForm1.Button1Click(Sender: TObject);
begin
ExportData(‘bas_kind,bas_goods‘);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ImportData(ExtractFilePath(Application.ExeName) + ‘export.sql‘, ‘bas_kind,bas_goods‘);
end;

procedure TForm1.ExportData(const tableNames: string);
var
sql, err: string;
sl, tables: TStringList;
i, h: Integer;
fieldNames, values: string;
function GetValue(field: TField): string;
begin
case field.DataType of
ftString, ftTimeStamp:
begin
Result := QuotedStr(field.AsString);
end;
ftBoolean:
begin
case field.AsBoolean of
true: Result := ‘1‘;
false: Result := ‘0‘;
end;
end;
else
if not VarIsNull(field.Value) then
begin
Result := VarToStr(field.Value);
end
else
Result := ‘null‘;
end;
end;

begin
if tableNames = ‘‘ then
exit;
tables := TStringList.Create;
tables.Delimiter := ‘,‘;
tables.DelimitedText := tableNames;
sl := TStringList.Create;
sl.Clear;
for h := 0 to tables.Count - 1 do
begin
sql := ‘select * from ‘ + tables[h];
if frmDB.QuerySQL(sql, cds, err) and (not cds.IsEmpty) then
begin
cds.First;
while not cds.Eof do
begin
fieldNames := ‘‘;
values := ‘‘;
for i := 0 to cds.FieldCount - 1 do
begin
if fieldNames = ‘‘ then
begin
fieldNames := cds.Fields[i].FieldName;
end
else
begin
fieldNames := fieldNames + ‘,‘ + cds.Fields[i].FieldName;
end;
if values = ‘‘ then
begin
values := GetValue(cds.Fields[i]);
end
else
begin
values := values + ‘,‘ + GetValue(cds.Fields[i]);
end;
end;
sl.Add(‘insert into ‘ + tables[h] + ‘(‘ + fieldNames + ‘) values (‘ +
values + ‘)‘);
cds.Next;
end;
end;
end;
sl.SaveToFile(ExtractFilePath(Application.ExeName) + ‘export.sql‘);
sl.Free;
tables.Free;
end;

procedure TForm1.ImportData(const fileName, tableNames: string);
var
cmd, tables: TStringList;
err, sql: string;
i: Integer;
begin
if (not FileExists(fileName)) or (tableNames = ‘‘) then
exit;
tables := TStringList.Create;
tables.Delimiter := ‘,‘;
tables.DelimitedText := tableNames;
for i := 0 to tables.Count - 1 do
begin
sql := ‘truncate table ‘ + tables[i];
frmDB.ExecuteSQL(sql, err);
end;
tables.Free;

cmd := TStringList.Create;
cmd.LoadFromFile(fileName);
frmDB.ExecuteSQL(cmd.Text, err);
cmd.Free;
end;

end.

备份数据表为insert 脚本

时间: 2024-10-09 20:34:21

备份数据表为insert 脚本的相关文章

将表数据生成Insert脚本

-- ============================================= -- Author: 明永成 -- Create date: 2016-01-03 -- Description: 将表数据生成Insert脚本 -- Demo : exec pCreateInsertScript. 'BexmCodeType','dictypeid = 61' -- ============================================= create proc

完全备份数据和差异备份数据的shell脚本

#!/bin/bash  # # Description: 该脚本功能,以周为单位循环:周五实行完全备份,周六不备份,周日至周四实行差异备份: #              因工作需要,不实行压缩打包的方式,采用cp完全备份,rsync差异备份: #              若要使用该脚本,请直接修改下面的两个参数:BackupPath和DATAPath,其他地方请不要修改: #  DATE: 2017-04-24 22:43:00 # MODIFY DATE: 2017-04-28 10:0

Vbs脚本实现数据CUT备份及自动轮询删除备份数据

我们上一篇文章中介绍了使用vbs脚本不同版本的office激活任务,其实说到vbs脚本相信大家都很了解了,有什么作用呢,其实说白了就是执行批处理任务的工具.Vbs在windows上应用相对比较多,其功能上我们就不多说了,今天呢还是介绍vbs脚本程序备份数据的计划任务.怎么想起来备份数据呢,近期呢,领导突然想到对公司的SAP备份数据进行异地备份,这样能提高数据的可恢复性:公司的SAP的系统是每天晚上2点执行一次备份,然后新的一天数据会覆盖旧的数据,如果当数据出现错误,我们也无法使用该之前的备份进行

Vbs备份数据脚本集合

近期公司的一些重要服务器需要对数据进行备份,所以就想到用vbs进行备份,一开始用powershell进行备份,后来还是选用了vbs,主要操作为将服务器的重要备份数据进行备份(剪贴)到指定的服务器目录上,然后对备份的目录文件进行文件名+日期进行备份,由于数据比较重要,然后又将备份后的数据进行了二次复制到云服务器上,最主要的是将本地的备份数据通过获取文件夹修改时间将最新的备份数据进行复制,所以就有两个脚本来完成,然后通过windows系统的计划任务进行自定义执行.具体脚本内容见下: 一.将指定路劲的

SQL Server里面导出SQL脚本(表数据的insert语句)

转载自:http://hi.baidu.com/pigarmy/blog/item/109894c445eab0a28326ac5a.html 最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能.BAIDU一下得到如下方法(亲测OK) 用这个存储过程可以实现: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @c

在sqlServer中把数据导出为insert脚本

有时候为了把数据导出为insert脚本,不得不用一些小工具,或者通过自己写存储过程来完成这一操作.其实SqlServer本身就有这种功能.以下是详细步骤:

使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)

1.查询待导出表Ad中的数据. SELECT * FROM [DB_Temp].[dbo].[Ad] 2.编写存储过程. 1 --将表数据生成SQL脚本的存储过程 2 3 CREATE PROCEDURE dbo.UspOutputData 4 @tablename sysname 5 AS 6 declare @column varchar(1000) 7 declare @columndata varchar(1000) 8 declare @sql varchar(4000) 9 decl

Mysql定时备份数据脚本

项目3.0的集群以搭建完成,只剩下细节相关的配置,和后期安全和优化的处理,考虑到数据库数据需要备份处理, 但每天手动进行备份处理太过于被动,而且白天用户访问,会有数据变化以及在备份时会影响服务器正常运行的性能, 所以考虑写一个脚本,并制定一个定时任务进行执行脚本备份数据: #!/bin/bash###数据库定时备份,并将备份的库进行打包压缩user=rootpasswd=123456back_path=/vdb1/mysql/backupdata_name=zmq123date=`date +%

expect与rsync 异步并行备份数据脚本

expect与rsync 异步并行备份数据脚本 #!/bin/bash #author:qunying.liu #2014.08.02 #脚本用途:通过rsync从远程机器备份数据到本机机器对应目录 #脚本目录:/usr/local/scripts/,expect脚本目录:/usr/local/scripts/dsfilersync, #备注:一个机器对应一个exp脚本,该脚本中包含该机器所有rsync同步目录. #初始化目录 cd   /usr/local/scripts/ grep "rsy