如何使用外部 csv 更新数据库表

如何使用外部 csv 更新数据

有数据售表(sales)数据如下,ORDERID是主键

ORDERID

CLIENT

SELLERID

AMOUNT

ORDERDATE

1

LIHD

11

9893

2020/12/7

2

NYSD

1

8332

2020/12/7

3

RSDRG

10

4614

2020/12/7

4

LDCH

18

8807

2020/12/7

5

JXJDI

19

743

2020/12/7

另有销售数据文件(sales.csv)数据如下:

ORDERID

CLIENT

SELLERID

AMOUNT

ORDERDATE

3

RSDRG

10

9999

2020/12/7

6

NYSD

1

8332

2020/12/7

7

RSDRG

10

4614

2020/12/7

8

LDCH

18

8807

2020/12/7

9

JXJDI

19

743

2020/12/7

需要使用sales.csv的数据更新数据sales表的数据,更新后数据库中sales表的数据如下:

ORDERID

CLIENT

SELLERID

AMOUNT

ORDERDATE

1

LIHD

11

9893

2020/12/7

2

NYSD

1

8332

2020/12/7

3

RSDRG

10

9999

2020/12/7

4

LDCH

18

8807

2020/12/7

5

JXJDI

19

743

2020/12/7

6

NYSD

1

8332

2020/12/7

7

RSDRG

10

4614

2020/12/7

8

LDCH

18

8807

2020/12/7

9

JXJDI

19

743

2020/12/7

借助集算器可以很方便地完成件事。
集算器安装包可去润乾网站,运行需要一个授,免版本就用。

1.     运行集算器,配置数据库连接并命名,填写的参数和 JDBC 连接时一样

操作菜Tool->Datasource Connection->Datasouce 设置如下

2.     在集算器中编写脚本csv2db.dfx

小数据csv中的数据量少,在运行境中,适合直接加至内存 ):


A

B

1

=file("sales.csv").import@ct()

/读取csv文件内容

2

=connect("mysql")

/连接数据库

3

>A2.update(A1,sales,ORDERID,CLIENT,SELLERID,AMOUNT,ORDERDATE)

/使用db.update函数将 csv数据更新至数据库的sales

4

>A2.close()

/关闭数据库连接

因为sales表中数据需要更新,所以直接使用update函数,如果知道csv中数据都是新的,那么可以使用了update@i函数,将只生成INSERT语句,这样速度会快很多,因为不需要判断是否生成UPDATE语句。update函数的详细用法见:db.update()

3.     执行脚本后,再观察数据库中sales表,可见数据已更新:

csv中的数据量多,在运行境中,不适合或者无法直接加至内存只需要将A1格中的import改为cursor,就可以完成大数据情况下的csv更新数据表的工作。