读取CSV文件中的每一行,并逐行存储在SQL表中



有一个CSV文件,如下所示,我想读取每一行,如果的起始字母是"H〃;则存储在SQL表中,并且如果它以"0"开头;D";则类似地将以"开头的字母存储在下一个不同的表中;T";文件中。应该从NAS驱动器读取该文件,并不断迭代和插入到相应的SQL表中。下面是代码:

Create all tables;
then declare the path of the file;
`df = open(path, 'r')
Lines = df.readlines()
count = 0
for line in Lines:
count += 1
data = line.split('|')
Create tables A, B and C
if data[0] == "H": Then insert into table
if data[0] == "D": Then insert into table
if data[0] == "T": Then insert into table `

但它只读取第一行,不进入下一行,当创建第一个表时,它表示表已经存在,可以进行第二次运行,尽管删除表A不起作用。

H|2.1|Additional Diag|2.1|Proprietary|ASMINB|2.1||751106|TXT||20210927190057|PROD|a7a8ec06-b1bc-4961-b1b5-61203c9d1ac2|ASM PD/HDC|89|Epsilon Team||ASM_HC_EXTERNAL|CHART QA|00253|||||^
D|MR|1437662063|||UHC|c943dcff416cd893e0534499330ae568|751106-10000003-01|8DG5CE9VM53_GSQA23221504|P|124|||||1164926390|176624||DEFAULT|99|PADGETT|NATALIE|||||||||||1164926390||||||||||||||104994605||AMC|AMR;AMR|8DG5CE9VM53|HARPER|DAVID|L|04/01/1960|M|H2531|1302 RAMBLEWOOD TRL||SOUTH EUCLID|OH|44121|||08/09/2021|08/09/2021|ICD10|||E1042|CO||||99213|12|20210927190057||N||8DG5CE9VM53|8DG5CE9VM53||||^
T|751106|1|1|3|^

请尝试data[0].strip()并再次检查代码。

您的代码没有正确缩进。并且您缺少SQL执行命令,因此我们无法判断它们是否正确。希望这有帮助:

# CREATE TABLE A IF NOT EXISTS ...
# CREATE TABLE B IF NOT EXISTS ...
# CREATE TABLE C IF NOT EXISTS ...
with open(path) as df:
count = 0
for line in df.readlines():
count += 1
data = line.split('|')
if data[0] == "H":
# INSERT INTO A VALUES ...
elif data[0] == "D":
# INSERT INTO B VALUES ...
elif data[0] == "T":
# INSERT INTO C VALUES ...
print("Count:", count)

相关内容

最新更新