<p>似乎您要做的是从源CSV读取数据,然后将相应的<code>INSERT</code>SQL语句写入文件,以便您可以将其直接传递给DBMS</p>
<p>您的代码当前存在的一些问题是:</p>
<ul>
<li>使用<code>values.append</code>将建立CSV每一行的值,因此插入的每个元组也将包含以前的所有元组数据,而这不是您想要的</li>
<li>您需要在每次迭代中写入输出文件;当前代码似乎只写CSV文件的最后一行(或者问题中的缩进是错误的)</li>
<li>假设问题中的缩进是错误的,您不想打开&;每次关闭文件时,只需在开始时打开一次文件&;最后把它关上</li>
<li>输出行应该包含一个尾随的<code>;</code>来终止每个SQL语句</li>
<li>为了便于阅读,输出行还应包含换行符</li>
</ul>
<p>解决上述问题后,您的代码大致如下所示:</p>
<pre><code>import csv
openFile = open('data.csv', 'r')
csvFile = csv.reader(openFile)
headers = [f'"{x}"' for x in next(csvFile)]
insert = f'INSERT INTO my_table ({", ".join(headers)}) VALUES '
createOnFile = open('data.txt', 'w+')
for row in csvFile:
values = ', '.join([f'"{x}"' for x in row])
data = insert + ''.join(f'({values});\n')
createOnFile.write(data)
createOnFile.close()
openFile.close()
</code></pre>
<p>注意,我还修改了代码以使用<a href="https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals" rel="nofollow noreferrer">f-strings</a>而不是字符串串联&;还将<code>map</code>的用法改为<a href="https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">list comprehensions</a>,在本例中更简洁</p>