小编Ces*_*sar的帖子

使用 Python 将 CSV 文件导入 SQL Server

我在将 CSV 文件上传到 MS SQL Server 中的表时遇到问题,CSV 文件有 25 列,标题与 SQL 中的表同名,该表也有 25 列。当我运行脚本时,它会引发错误

params arg (<class 'list'>) can be only a tuple or a dictionary
Run Code Online (Sandbox Code Playgroud)

将此数据导入 MS SQL 的最佳方法是什么?CSV 和 SQL 表都具有完全相同的列名。

这是代码:

import csv
import pymssql

conn = pymssql.connect(
    server="xx.xxx.xx.90",
    port = 2433,
    user='SQLAdmin',
    password='xxxxxxxx',
    database='NasrWeb'
)

cursor = conn.cursor()
customer_data = csv.reader('cleanNVG.csv') #25 columns with same header as SQL

for row in customer_data:
    cursor.execute('INSERT INTO zzzOracle_Extract([Customer Name]\
      ,[Customer #]\
      ,[Account Name]\
      ,[Identifying Address Flag]\
      ,[Address1]\
      ,[Address2]\
      ,[Address3]\ …
Run Code Online (Sandbox Code Playgroud)

python pymssql python-3.x

5
推荐指数
1
解决办法
3万
查看次数

删除包含 CSV 文件中的字符串的行

我无法删除一列中包含字符串的文本文件中的行。到目前为止,我的代码无法删除该行,但它能够读取文本文件并将其作为 CSV 文件保存到单独的列中。但行没有被删除。

这是该列中的值的样子:

Ship To or Bill To
------------------
3000000092-BILL_TO
3000000092-SHIP_TO
3000004000_SHIP_TO-INAC-EIM
Run Code Online (Sandbox Code Playgroud)

还有 20 多列和 50,000k 多行。所以基本上我试图删除所有包含字符串'INAC''EIM'.

import csv

my_file_name = "NVG.txt"
cleaned_file = "cleanNVG.csv"
remove_words = ['INAC','EIM']

with open(my_file_name, 'r', newline='') as infile, \
     open(cleaned_file, 'w',newline='') as outfile:
    writer = csv.writer(outfile)
    for line in csv.reader(infile, delimiter='|'):
        if not any(remove_word in line for remove_word in remove_words):
            writer.writerow(line)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

4
推荐指数
1
解决办法
7970
查看次数

值小于行的计数总和

我正在使用Pandas来创建新列,该列将搜索整个列中的值[1-100],并将计算小于当前行的值。

请参见下面的[df]示例:

[A][NewCol]
 1 0
 3 2
 2 1
 5 4
 8 5
 3 2
Run Code Online (Sandbox Code Playgroud)

本质上,对于每一行,我需要查看整个A列,并计算比当前行少多少个值。因此,对于值5,有4个值小于(<)小于5(1,2,3,3)。

最简单的方法是什么?

谢谢!

python pandas

3
推荐指数
2
解决办法
91
查看次数

如何加快日期的 SQL 查询

我有一个查询,我正在使用来自大约一百万行的 2 个表的内部联接。我正在尝试运行查询,因此它只获取上个月的数据。但是,使用 getDate() 函数需要很长时间。但是,当我以“2016-12-01”和“2017-01-01”这种格式输入日期时 - 它真的很快。如何修改查询以使其运行得更快?我读到我可能必须创建一个非聚集索引,但我还不太擅长这些。

select 
    custKey,
    sum(salesAmt) as Sales, 
    sum(returnAmt) as Credit, 
    (sum(salesAmt) - sum(returnAmt)) as CONNET
from
    [SpotFireStaging].[dbo].[tsoSalesAnalysis] 
inner join 
    [SpotFireStaging].[dbo].OOGPLensDesc as o on tsoSalesAnalysis.ItemKey = O.ItemKey
where 
    PostDate between --DATEADD(MONTH, DATEDIFF(MONTH,0, GETDATE())-1,0 ) 
--AND DATEADD(MS, -3,DATEADD(MM, DATEDIFF(M,-1, GETDATE()) -1, 0)) 
    '2016-12-01' and '2017-01-01'
group by 
    custkey
Run Code Online (Sandbox Code Playgroud)

sql sql-server

1
推荐指数
1
解决办法
756
查看次数

从数组中的一组字符串中提取 ID 和值

我在解决以下问题时遇到困难。

我有一个df['subjects']有字符串列表的熊猫。

df['subjects'].head(3) = 

0['B:1187', 'B:1188', 'P:123456', 'B:62']
1['G:1', 'G:1C', 'G:21', 'G:3', 'G:30']
2['B:71', 'E:D', 'G:6J', 'P:125467', 'B:1296', 'P:789456']
Run Code Online (Sandbox Code Playgroud)

基本上我需要的是以下内容..

df['subjects'] = 
123456
None
125467,789456
Run Code Online (Sandbox Code Playgroud)

我只需要返回具有的值 P:XXXXX

我试过使用 for 循环,但我一直得到错误的值。

python pandas

1
推荐指数
1
解决办法
53
查看次数

Python | 分隔文本文件为csv格式

我是python的新手,但是我在阅读包含以"|"分隔的数据的文本文件时遇到了问题 作为分隔符.我如何将文件分成CSV格式的列.

import csv
my_file_name = "NVG.txt"
cleaned_file = "cleanNVG.csv"

with open(my_file_name, 'r') as infile, open(cleaned_file, 'w') as outfile:
    data = infile.read()

    data = data.replace("|","")
    outfile.write(data)
Run Code Online (Sandbox Code Playgroud)

这段代码摆脱了| 空白但所有数据现在只在一列中.我该如何正确格式化?我提前感谢您的帮助.

python python-3.x

0
推荐指数
1
解决办法
59
查看次数

标签 统计

python ×5

python-3.x ×3

pandas ×2

pymssql ×1

sql ×1

sql-server ×1