我有一个excel CSV文件,客户正在记录发票。为每个供应商创建了一个新列,并将金额放在每列之下。
像这样:
ABC Company Jacks Garage XYZ Company
123.45 223.22 123.11
423.11 10.22 11.21
等。我试图猜测如何将其分为两列(供应商,金额),以便我可以将该数据导入实际表中。大约有200家供应商这样做,手动剪切和粘贴将永远工作。
我能以某种方式循环并将信息插入2列表吗?
答案 0 :(得分:1)
我会通过编写一个用几乎任何语言编写的简单脚本来做到这一点,例如: Python,PHP,Ruby,甚至是Perl。任何这些语言都可以轻松读取文本文件,将字段拆分为数组,并以任何您想要的方式将字段发布到数据库中。
或者,您可以在不编写代码的情况下执行此操作,但需要执行以下步骤:
将CSV文件按原样加载到表格中。
create table invoices_asis (
rownum serial primary key,
abc_company_amount numeric(9,2),
jacks_garage_amount numeric(9,2),
xyz_company_amount numeric(9,2)
);
load data infile 'invoices.csv' into table invoices_asis ignore 1 lines
(abc_company_amount, jacks_garage_amount, xyz_company_amount);
然后将每个给定供应商的所有数据复制到您的(供应商,金额)表中。
create table invoices (
invoice_id serial primary key,
vendor varchar(20),
amount numeric(9,2)
);
insert into invoices (vendor, amount)
select 'ABC Company', abc_company_amount from invoices_asis;
insert into invoices (vendor, amount)
select 'Jacks Garage', jacks_garage_amount from invoices_asis;
insert into invoices (vendor, amount)
select 'XYZ Company', xyz_commpany_amount from invoices_asis;
最后,删除原样表。
drop table invoices_asis;
答案 1 :(得分:0)
我认为您想要的是' unpivot',其中有很多选项(Excel eg)。
在最左侧插入一个空白列,然后在示例中将数据包含在4.处。在6.将Column移动到Row上方的ROWS。双击Grand Total并删除左侧列。