是否有适用于批量插入 MS SQL Server 的 Python

使用quotechar'|'读取和写入CSV 在 Python 中

下面的 csv 格式允许通过 Python 使用包含指定分隔符(在本例中为“,”)的列读取和写入文件。在这种情况下,“,”位于第二个条目的 B 值之间。


AAAAA, |B,BB|, CCC


以下 Python 代码可用于,例如将行写入文件:


    with open(self.base_uri + filename, 'w') as f:

            writer = csv.writer(f,

                                delimiter=',',

                                quotechar='|',

                                quoting=csv.QUOTE_MINIMAL)


            for row in data_list:

                writer.writerow(row)

批量插入 MS SQL Server 的困难

当尝试使用 csv.file 在 MS SQL Server 中应用批量插入时,每行都会发生错误,其中包含一个quotechar:


看看这里


到目前为止,我使用的 SQL 代码如下所示:


bulk insert DATABASE

from 'C:\Users\XX\Documents\sample.csv'

with

(

rowterminator='\n',

fieldterminator=','

)

您对如何解决此问题有任何想法吗?MS SQL Server 中的 Python 中的quotechar 是否有任何等价物?


catspeake
浏览 165回答 3
3回答

蓝山帝景

我想你需要FIELDQUOTE:指定将用作 CSV 文件中的引号字符的字符。如果未指定,引号字符 (") 将用作 RFC 4180 标准中定义的引号字符。bulk insert DATABASEfrom 'C:\Users\XX\Documents\sample.csv'with(rowterminator='\n',fieldterminator=',',fieldquote = '|')如果您使用的版本低于 2017,您可以使用quotechar equals 而"不是管道符号来生成您的CSV 

大话西游666

我找到了另一种解决方案。我已将分隔符设置为管道 ( | ) 并将引号设置为 ( " )。感谢所有试图帮助我的人!

呼如林

您可以尝试格式文件:如果您在第二列上应用了引号... [csvfile] 包含 AAAAA,"B,BB",CCCCreate Table csvfile(f1 VarChar(10),f2 VarChar(10),f3 VarChar(10))BULK INSERT csvfile        FROM 'c:\downloads\sample.csv'        WITH (FORMATFILE = 'c:\downloads\sample.fmt'); 样本文件14.031       SQLCHAR             0       10      ",\""    1     f1       SQL_Latin1_General_CP1_CI_AS2       SQLCHAR             0       10      "\","    2     f2       SQL_Latin1_General_CP1_CI_AS3       SQLCHAR             0       10      "\r\n"   3     f3       SQL_Latin1_General_CP1_CI_AS
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python