精华内容
下载资源
问答
  • 如何将CSV数据导入PostgreSQL
    千次阅读
    2020-04-20 07:38:05

    介绍

    许多数据库服务器都支持CSV数据传输,本文将介绍将CSV文件导入PostgreSQL的一种方法。

    SQL聚合很困难!

    以前的文章展示了FlexyPool指标功能,所有与连接有关的统计信息均以CSV格式导出。

    当涉及聚合表格数据时,SQL最好。 如果您的数据库引擎支持SQL:2003 Windows函数,那么您绝对应该利用此强大功能。

    脚本风格

    对于脚本编写,我主要依靠Python或Bash脚本编写。 Python功能强大且富有表现力,而Bash脚本甚至在Windows上也不需要太多依赖项。

    脚本编写时间

    这些是要导入的CSV文件:

    $ ls -1 *.csv
    concurrentConnectionRequestsHistogram.csv
    concurrentConnectionsHistogram.csv
    connectionAcquireMillis.csv
    connectionLeaseMillis.csv
    maxPoolSizeHistogram.csv
    overallConnectionAcquireMillis.csv
    overflowPoolSizeHistogram.csv
    retryAttemptsHistogram.csv

    所有这些文件都是Codahale直方图和计时器指标,这就是导入脚本的样子:

    #!/bin/bash
     
    function import_histogram(){
        echo "Importing Histogram file: $2 to $1 table"
        psql metrics postgres <<SQL
            CREATE TABLE IF NOT EXISTS $1 (
                t BIGINT,
                count BIGINT,
                max NUMERIC(19, 6),
                mean NUMERIC(19, 6),
                min NUMERIC(19, 6),
                stddev NUMERIC(19, 6),
                p50 NUMERIC(19, 6),
                p75 NUMERIC(19, 6),
                p95 NUMERIC(19, 6),
                p98 NUMERIC(19, 6),
                p99 NUMERIC(19, 6),
                p999 NUMERIC(19, 6),
                PRIMARY KEY (t)
            );
            COPY $1(
                t,
                count,
                max,
                mean,
                min,
                stddev,
                p50,
                p75,
                p95,
                p98,
                p99,
                p999
            )
            FROM '$2' WITH DELIMITER ',' CSV HEADER;
    SQL
    }
     
    function import_timer(){
        echo "Importing Timer file: $2 to $1 table"
        psql metrics postgres <<SQL
        CREATE TABLE IF NOT EXISTS $1 (
                t BIGINT,
                count BIGINT,
                max NUMERIC(19, 6),
                mean NUMERIC(19, 6),
                min NUMERIC(19, 6),
                stddev NUMERIC(19, 6),
                p50 NUMERIC(19, 6),
                p75 NUMERIC(19, 6),
                p95 NUMERIC(19, 6),
                p98 NUMERIC(19, 6),
                p99 NUMERIC(19, 6),
                p999 NUMERIC(19, 6),
                mean_rate NUMERIC(19, 6),
                m1_rate NUMERIC(19, 6),
                m5_rate NUMERIC(19, 6),
                m15_rate NUMERIC(19, 6),
                rate_unit VARCHAR(64),
                duration_unit VARCHAR(64),
                PRIMARY KEY (t)
            );
            COPY $1(
                t,
                count,
                max,
                mean,
                min,
                stddev,
                p50,
                p75,
                p95,
                p98,
                p99,
                p999,
                mean_rate,
                m1_rate,
                m5_rate,
                m15_rate,
                rate_unit,
                duration_unit
            )
            FROM '$2' WITH DELIMITER ',' CSV HEADER;		
    SQL
    }
     
    for csv_file in *.csv
    do 
        table_name=`echo ${csv_file%%.*}|sed -e 's/\([A-Z]\)/_\L\1/g'`     
        csv_folder_path="$(cygpath -w `pwd`)"
        csv_file_path=$csv_folder_path/$csv_file	
        if [[ $table_name == *histogram ]]
        then
            import_histogram $table_name $csv_file_path    
        elif [[ $table_name == *millis ]]
        then
            import_timer $table_name $csv_file_path        
        fi
    done

    因为PostgreSQL需要Windows路径,所以我们需要使用$(cygpath -w`pwd`)命令将Cygwin类似路径转换为Windows路径。

    现在运行此脚本:

    vlad@HOME /cygdrive/d/metrics
    $ dos2unix codahale_metrics_csv_to_postgres.sh
    dos2unix: converting file codahale_metrics_csv_to_postgres.sh to Unix format ...
    
    vlad@HOME /cygdrive/d/metrics
    $ ./codahale_metrics_csv_to_postgres.sh
    Importing Histogram file: D:\metrics/concurrentConnectionRequestsHistogram.csv to concurrent_connection_requests_histogram table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "concurrent_connection_requests_histogram_pkey" for table "concurrent_connection_requests_histogram"
    CREATE TABLE
    COPY 1537
    Importing Histogram file: D:\metrics/concurrentConnectionsHistogram.csv to concurrent_connections_histogram table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "concurrent_connections_histogram_pkey" for table "concurrent_connections_histogram"
    CREATE TABLE
    COPY 1537
    Importing Timer file: D:\metrics/connectionAcquireMillis.csv to connection_acquire_millis table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "connection_acquire_millis_pkey" for table "connection_acquire_millis"
    CREATE TABLE
    COPY 1537
    Importing Timer file: D:\metrics/connectionLeaseMillis.csv to connection_lease_millis table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "connection_lease_millis_pkey" for table "connection_lease_millis"
    CREATE TABLE
    COPY 1537
    Importing Histogram file: D:\metrics/maxPoolSizeHistogram.csv to max_pool_size_histogram table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "max_pool_size_histogram_pkey" for table "max_pool_size_histogram"
    CREATE TABLE
    COPY 1537
    Importing Timer file: D:\metrics/overallConnectionAcquireMillis.csv to overall_connection_acquire_millis table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "overall_connection_acquire_millis_pkey" for table "overall_connection_acquire_millis"
    CREATE TABLE
    COPY 1537
    Importing Histogram file: D:\metrics/overflowPoolSizeHistogram.csv to overflow_pool_size_histogram table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "overflow_pool_size_histogram_pkey" for table "overflow_pool_size_histogram"
    CREATE TABLE
    COPY 1537
    Importing Histogram file: D:\metrics/retryAttemptsHistogram.csv to retry_attempts_histogram table
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "retry_attempts_histogram_pkey" for table "retry_attempts_histogram"
    CREATE TABLE
    COPY 1537

    运行此脚本后,我们获得了以下完全加载的PostgreSQL表:

    codahale_csv_postgres_import

    我的下一篇文章将使窗口函数起作用,因为我想将FLexyPool的经验指标与排队论的概率进行比较。

    翻译自: https://www.javacodegeeks.com/2014/05/how-to-import-csv-data-into-postgresql.html

    更多相关内容
  • matlab importdata不能读取全部数据问题

    千次阅读 2020-10-25 10:10:22
    最近使用importdata函数不能读取全部数据,数据集315行,但是读取了197行,那就是197-198之间有问题,百度之后有了思路。由于没有找到具体的证据,所以这里说一下解决思路。 import可以导入很多文件类型,.dat文件...

       最近使用importdata函数不能读取全部数据,数据集315行,但是读取了197行,那就是197-198之间有问题,百度之后有了思路。由于没有找到具体的证据,所以这里说一下解决思路。

       import可以导入很多文件类型,.dat文件应该默认的是ASCII码,在编码处看到(我用的notepad++)使用的UTF-8编码,修改为使用ANSI编码,看一下结果

    UTF-8编码

    ANSI编码

    果然有问题,删除就可以了。这个数据是直接从网页端复制的,所以应该是哪里出了问题。

    展开全文
  • 介绍 (Introduction) Importing and exporting CSV files is a ... 导入和导出CSV文件是DBA经常执行的一项常见任务。 For import, we can use the following methods 对于导入,我们可以使用以下方法...

    介绍 (Introduction)

    Importing and exporting CSV files is a common task to DBAs from time to time.

    导入和导出CSV文件是DBA经常执行的一项常见任务。

    For import, we can use the following methods

    对于导入,我们可以使用以下方法

    For export, we can use the following methods

    对于导出,我们可以使用以下方法

    But to do both import and export inside T-SQL, currently, the only way is via a custom CLR stored procedure.

    但是目前,要同时在T-SQL中进行导入和导出,唯一的方法是通过自定义CLR存储过程。

    This dilemma is changed since the release of SQL Server 2016, which has R integrated. In this article, we will demonstrate how to use R embedded inside T-SQL to do import / export work.

    自从集成了RSQL Server 2016版本以来,这一难题就得到了改变。 在本文中,我们将演示如何使用嵌入在T-SQL中的R进行导入/导出工作。

    SQL Server 2016中的R集成 (R Integration in SQL Server 2016)

    To use R inside SQL Server 2016, we should first install the R Service in-Database. For detailed installation, please see Set up SQL Server R Services (In-Database)

    若要在SQL Server 2016中使用R,我们应首先在数据库中安装R Service。 有关详细的安装,请参阅设置SQL Server R Services(数据库内)

    T-SQL integrates R via a new stored procedure: sp_execute_external_script.

    T-SQL通过新的存储过程sp_execute_external_script集成了R。

    The main purpose of R language is for data analysis, especially, in statistics way. However, since any data analysis work naturally needs to deal with external data sources, among which is CSV file, we can use this capability to our advantage.

    R语言的主要目的是用于数据分析,尤其是以统计的方式。 但是,由于任何数据分析工作自然都需要处理外部数据源,其中包括CSV文件,因此我们可以利用此功能来发挥我们的优势。

    What is more interesting here is SQL Server R service is installed with an enhanced and tailored for SQL Server 2016 R package RevoScaleR package, which contains some handy functions.

    此处更有趣的是,SQL Server R服务已安装并经过增强并针对SQL Server 2016 R程序包RevoScaleR程序包进行了定制 ,其中包含一些方便的功能

    环境准备 (Environment Preparation)

    Let’s first prepare some real-world CSV files, I recommend to download CSV files from 193,992 datasets found.

    首先,让我们准备一些实际的CSV文件,我建议从找到的193,992个数据集中下载CSV文件。

    We will download the first two dataset CSV files, “College Scorecard” and “Demographic Statistics By Zip Code”, just click the arrow-pointed two links as shown below, and two CSV files will be downloaded.

    我们将下载前两个数据集CSV文件,即“大学记分卡”和“按邮政编码分类的人口统计学”,只需单击箭头所示的两个链接,如下所示,将下载两个CSV文件。

    After downloading the two files, we can move the “Consumer_complain.csv” and “Most-Recent-Cohorts-Scorecard-Elements.csv” to a designated folder. In my case, I created a folder C:\RData and put them there as shown below

    下载两个文件后,我们可以将“ Consumer_complain.csv”和“ Most-Recent-Cohorts-Scorecard-Elements.csv”移动到指定文件夹。 就我而言,我创建了一个文件夹C:\ RData并将其放置在下面,如下所示

    These two files are pretty typical in feature, the Demographic_Statistics_By_Zip_Code.csv are all pure numeric values, and another file has big number of columns, 122 columns to be exact.

    这两个文件在功能上非常典型,Demographic_Statistics_By_Zip_Code.csv都是纯数字值,另一个文件的列数很多,准确的说是122列。

    I will load these two files to my local SQL Server 2016 instance, i.e. [localhost\sql2016] in [TestDB] database.

    我将这两个文件加载到本地SQL Server 2016实例,即[TestDB]数据库中的[localhost \ sql2016]。

    数据导入/导出要求 (Data Import / Export Requirements)

    We will do the following for this import / export requirements:

    我们将针对此导入/导出要求执行以下操作:

    1. Import the two csv files into staging tables in [TestDB]. Input parameter is a csv file name

      将两个csv文件导入[TestDB]中的登台表。 输入参数是一个csv文件名
    2. Export the staging tables back to a csv file. Input parameters are staging table name and the csv file name

      将登台表导出回csv文件。 输入参数是登台表名称和csv文件名称
    3. Import / Export should be done inside T-SQL

      导入/导出应在T-SQL内部完成

    实施导入 (Implementation of Import)

    In most of the data loading work, we will first create staging tables and then start to load. However, with some amazing functions in RevoScaleR package, this staging table creation step can be omitted as the R function will auto create the staging table, it is such a relief when we have to handle a CSV file with 100+ columns.

    在大多数数据加载工作中,我们将首先创建临时表,然后开始加载。 但是,由于RevoScaleR软件包中有一些了不起的功能,因此可以省略此登台表创建步骤,因为R函数将自动创建登台表,当我们必须处理包含100列以上的CSV文件时,这是一种缓解。

    The implementation is straight-forward

    实现简单明了

    1. Read csv file with read.csv R function into variable c, which will be the source (line 7)

      使用read.csv R函数将csv文件读入变量c,这将成为源(第7行)
    2. From the csv file full path, we extract the file name (without directory and suffix), we will use this file name as the staging table name (line 8, 9)

      从csv文件的完整路径中,我们提取文件名(不带目录和后缀),我们将使用此文件名作为登台表名(第8、9行)
    3. Create a sql server connection string

      创建一个SQL Server连接字符串
    4. Create a destination SQL Server data source using RxSQLServerData function (line 12)

      使用RxSQLServerData函数创建目标SQL Server数据源(第12行)
    5. Using RxDataStep function to import the source into the destination (line 13)

      使用RxDataStep函数将源导入到目标(第13行)
    6. If we want to import a different csv file, we just need to change the first line to assign the proper value to @filepath

      如果要导入其他的csv文件,则只需更改第一行即可为@filepath分配适当的值

    One special notd here, line 11 defines a connection string, at this moment, it seems we need a User ID (UID) and Password (PWD) to avoid problems. If we use Trusted_Connection = True, there can be problems. So in this case, I created a login XYZ and assign it as a db_owner user in [TestDB].

    此处需要特别注意的是,第11行定义了一个连接字符串,此刻,我们似乎需要一个用户ID(UID)和密码(PWD)以避免问题。 如果我们使用Trusted_Connection = True,则可能会出现问题。 因此,在这种情况下,我创建了登录XYZ并将其分配为[TestDB]中的db_owner用户。

    After this done, we can check what the new staging table looks like

    完成此操作后,我们可以检查新登台表的外观

    We notice that all columns are created using the original names in the source csv file with the proper data type.

    我们注意到,所有列都是使用具有正确数据类型的源csv文件中的原始名称创建的。

    After assigning @filepath = ‘c:/rdata/Most-Recent-Cohorts-Scorecard-Elements.csv’ , and re-running the script, we can check to see a new table [Most-Recent-Cohorts-Scorecard-Elements] is created with 122 columns as shown below.

    分配@filepath = 'c:/rdata/Most-Recent-Cohorts-Scorecard-Elements.csv'并重新运行脚本后,我们可以检查以查看新表[Most-Recent-Cohorts-Scorecard-Elements]创建有122列,如下所示。

    However, there is a problem for this csv file import because some csv columns are treated as integers, for example, when for [OPEID] and [OPEID6], they should be treated as a string instead because treating them as integers will drop the leading 0s.

    但是,此csv文件导入存在问题,因为某些csv列被视为整数,例如,对于[OPEID]和[OPEID6],应将它们视为字符串,因为将它们视为整数会删除前导0s。

    When we see what is inside the table, we will notice that in such scenario, we cannot rely on the table auto creation.

    当我们看到表中的内容时,我们会注意到在这种情况下,我们不能依赖表的自动创建。

    To correct this, we have to give the instruction to R read.csv function by specifying the data type for the two columns as shown below

    为了解决这个问题,我们必须通过指定两列的数据类型来向R read.csv函数提供指令,如下所示

    We can now see the correct values for [OPEID] and [OPEID6] columns

    现在,我们可以看到[OPEID]和[OPEID6]列的正确值

    实施出口 (Implementation of Export)

    If we want to dump the data out of a table to csv file. We need to define two input parameters, one is the destination csv file path and another is a query to select the table.

    如果我们想将数据从表中转储到csv文件中。 我们需要定义两个输入参数,一个是目标csv文件路径,另一个是选择表的查询。

    The beautify of sp_execute_external_script is it can perform a query against table inside SQL Server via its @input_data_1 parameter, and then transfer the result to the R script as a named variable via its @input_data_1_name.

    美化sp_execute_external_script是因为它可以通过其@ input_data_1参数对SQL Server中的表执行查询,然后通过其@ input_data_1_name将结果作为命名变量传输到R脚本。

    So here is the details:

    因此,这是详细信息:

    • Define the csv file full path (line 3), this information will be consumed by the embedded R script via an input parameter definition (line 11 & 12 and consumed in line 8)

      定义csv文件的完整路径(第3行),该信息将由嵌入式R脚本通过输入参数定义使用(第11和12行,在第8行中使用)
    • Define a query to retrieve data inside table (line 4 and line 9)

      定义查询以检索表内部的数据(第4行和第9行)
    • SrcTable, and it Is consumed in the embedded R script (line 8) SrcTable,并在嵌入式R脚本中使用(第8行)
    • write.csv to generate the csv file. write.csv生成csv文件。

    We can modify @query to export whatever we want, such as a query with where clause, or just select some columns instead of all columns.

    我们可以修改@query以导出所需的任何内容,例如带有where子句的查询,或者只选择某些列而不是所有列。

    The complete T-SQL script is shown here:

    完整的T-SQL脚本如下所示:

     
    -- import data 1: import from csv file by using default configurations
    -- the only input parameter needed is the full path of the source csv file
    declare @filepath varchar(100) = 'c:/rdata/Demographic_Statistics_By_Zip_Code.csv'  -- using / to replace \
    declare @tblname varchar(100);
    declare @svr varchar(100) = @@servername;
     
    exec sp_execute_external_script @language = N'R'
    , @script = N'
    c <- read.csv(filepath, sep = ",", header = T)
    filename <- basename(filepath)
    filename <- paste("dbo.[", substr(filename,1, nchar(filename)-4), "]", sep="") #remove .csv suffix 
     
    conn <- paste("SERVER=", server, "; DATABASE=", db, ";UID=xyz;PWD=h0rse;", sep = "")
    destDB <- RxSqlServerData(table = filename, connectionString = conn);
    rxDataStep(inData=c, outFile = destDB, rowsPerRead=1000, overwrite = T );
    '
    , @params = N'@filepath varchar(100), @server varchar(100), @db varchar(100)'
    , @filepath = @filepath
    , @server = @svr
    , @db = 'TestDB';
    go
     
     
    -- import data 2: assign data type to some columns using colClasses in read.csv function
    -- the only input parameter needed is the full path of the source csv file
     
    declare @filepath varchar(100) = 'c:/rdata/Most-Recent-Cohorts-Scorecard-Elements.csv'  -- using / to replace \
    declare @tblname varchar(100);
    declare @svr varchar(100) = @@servername;
     
    exec sp_execute_external_script @language = N'R'
    , @script = N'
    c <- read.csv(filepath, sep = ",", header = T, colClasses = c("OPEID" = "character", "OPEID6"="character"))
    filename <- basename(filepath)
    filename <- paste("dbo.[", substr(filename,1, nchar(filename)-4), "]", sep="") #remove .csv suffix 
     
    conn <- paste("SERVER=", server, "; DATABASE=", db, ";UID=xyz;PWD=h0rse;", sep = "")
    destDB <- RxSqlServerData(table = filename, connectionString = conn);
    rxDataStep(inData=c, outFile = destDB, rowsPerRead=1000, overwrite = T );
    '
    , @params = N'@filepath varchar(100), @server varchar(100), @db varchar(100)'
    , @filepath = @filepath
    , @server = @svr
    , @db = 'TestDB';
    go
     
    -- export data: 
    -- two input parameters are needed, one is the destination csv file path  
    -- and the other is a query to select the source table
     
    declare @dest_filepath varchar(100), @query nvarchar(1000) ;
     
    select @dest_filepath = 'c:/rdata/Most-Recent-Cohorts-Scorecard-Elements_copy.csv' -- using / to replace \
    , @query = 'select * from [TestDB].[dbo].[Most-Recent-Cohorts-Scorecard-Elements]'
     
    /* 
    -- for the Demographic table, using the followng setting to replace the above two lines
     
    select @dest_filepath = 'c:/rdata/Demographic_Statistics_By_Zip_Code_copy.csv' 
    , @query = 'select * from [TestDB].[dbo].[Demographic_Statistics_By_Zip_Code]'
     
    */
     
    exec sp_execute_external_script @language = N'R'
    , @script = N'write.csv(SrcTable, file=dest_filepath, quote=F, row.names=F)'
    , @input_data_1 = @query
    , @input_data_1_name  = N'SrcTable'
    , @params = N'@dest_filepath varchar(100)'
    , @dest_filepath = @dest_filepath
     
    go
     
    

    After the run the whole script, I can find the new files are created

    运行整个脚本后,我可以找到创建的新文件

    摘要 (Summary)

    In this article, we discussed how to execute a SQL Server table import / export via R inside T-SQL. This is totally different from our traditional approaches. This new method is easy and can handle tough CSV files, such as a CSV file with column values containing multiple lines.

    在本文中,我们讨论了如何在T-SQL中通过R执行SQL Server表的导入/导出。 这与我们的传统方法完全不同。 这种新方法很容易,并且可以处理棘手的CSV文件,例如列值包含多行的CSV文件。

    This new approach does not require any additional R packages, and the script can run in SQL Server 2016 with default R installation, which already contains RevoScaleR package.

    这种新方法不需要任何其他R包,并且该脚本可以在具有默认R安装SQL Server 2016中运行,该脚本已经包含RevoScaleR包。

    During my test with various CSV files, I notice that when reading big CSV file, we need very big memory, otherwise, there can be error. However, if run the R script directly, i.e. R script not embedded in T-SQL, like in RStudio, the memory requirement is still there, but R script can finish without error, while running the same R script inside sp_execute_external_script will fail.

    在测试各种CSV文件的过程中,我注意到在读取大CSV文件时,我们需要非常大的内存,否则可能会出错。 但是,如果直接运行R脚本,即未像RStudio一样在T-SQL中嵌入R脚本,则内存需求仍然存在,但是R脚本可以无错误完成,而在sp_execute_external_script中运行相同的R脚本将失败。

    No doubt, the current R integration with T-SQL is just Version 1, and there are some wrinkles in the implementation. But it is definitely a great feature which opens another door for DBAs / developers to tackle lots works. It is worth our while to understand and learn it.

    毫无疑问,当前与T-SQL的R集成仅为版本1,并且在实现方面存在一些缺陷。 但这绝对是一个很棒的功能,这为DBA /开发人员处理大量工作打开了另一扇门。 值得我们花时间去理解和学习它。

    下一步 (Next Steps)

    R has lots of useful 3rd packages (most of them are open-sourced), and we can do lots of additional work with these packages, such as importing / exporting Excel files (esp. those .xlsx files), or regular expressions etc. It is really fun to play with these packages, and I will share my exploration journey in future.

    R有很多有用的第3个程序包(其中大多数是开源的),我们可以对这些程序包做很多额外的工作,例如导入/导出Excel文件(尤其是那些.xlsx文件)或正则表达式等。玩这些软件包真的很有趣,以后我将分享我的探索之旅。

    翻译自: https://www.sqlshack.com/how-to-import-export-csv-files-with-r-in-sql-server-2016/

    展开全文
  • 大家做在数据处理的时候,肯定...1.python读写csv文件import csv#python2可以用file替代openwith open('test.csv','w') as csvFile:writer = csv.writer(csvFile)#先写columns_namewriter.writerow(["index&q...

    大家做在数据处理的时候,肯定难免会与文件交互,那么对于指定的文件类型,我们如何操作呢?

    1.python读写csv文件

    import csv

    #python2可以用file替代open

    with open('test.csv','w') as csvFile:

    writer = csv.writer(csvFile)

    #先写columns_name

    writer.writerow(["index","a_name","b_name"])

    #写入多行用writerows

    writer.writerows([[1,2,3],[0,1,2],[4,5,6]])

    #用reder读取csv文件

    with open('test.csv','r') as csvFile:

    reader = csv.reader(csvFile)

    for line in reader:

    print line

    一定要注意,csv文件在写入时,字段和字段之间是用逗号“”,“”分割的,如果稍微不注意,就会出现串行的情况。

    2.python读写excel文件

    import xlwt

    #创建工作簿

    f = xlwt.Workbook()

    '''

    创建第一个sheet:

    sheet1

    '''

    #创建sheet

    sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True)

    row0 = [u'编号',u'单位',u'网站备案号',u'域名',u'外链名称',u'不良网站名',u'不良url地址',u'地市',u'ip地址',u'截图',u'备注',u'审核时间',u'父链接',u'源码超链接']

    #生成第一行

    for i in range(0,len(row0)):

    sheet1.write(0,i,row0[i]) # 顺序为x行x列写入第x个元素

    f.save('newfile.xls')

    #!/usr/bin/env python

    # -*- coding: utf-8 -*-

    # 读取excel数据

    import xlrd

    data = xlrd.open_workbook('test.xls') # 打开xls文件

    table = data.sheets()[0] # 打开第一张表

    nrows = table.nrows # 获取表的行数

    for i in range(nrows): # 循环逐行打印

    if i == 0: # 跳过第一行

    continue

    print table.row_values(i)

    3.python读写txt文件

    #第一种

    with open("test.txt","r","utf-8") as f:

    # 为a+模式时,因为为追加模式,指针已经移到文尾,读出来的是一个空字符串。

    ftext = f.read() # 一次性读全部成一个字符串

    ftextlist = f.readlines() # 也是一次性读全部,但每一行作为一个子句存入一个列表

    #第二种

    f = open('test.txt', 'r', 'utf-8')

    ftext = f.read() # 一次性读取完成

    ftextlist = f.readlines() # 同上

    fline = f.readline() # 只读取1行

    f.close() # 关闭文件

    # 写入txt

    f = open('test.txt', 'ab', 'utf-8') # 在文件存在内容的时候追加

    f = open('test.txt', 'wb', 'utf-8') # 文件存在时直接覆盖,没有就创建文件写入

    f.write('aa') # 文件写入内容

    f.close()

    # 第二种

    with open('test.txt', 'a') as f: # 道理同上

    f.write('aa')

    with open('test.txt', 'w') as f: # 道理同上

    f.write('aa')

    339347ea516d

    image.png

    接下来说说with open 和 open的区别:

    区别:

    用open去打开一个文件进行读取,假设文件不存在的话,比如打开文件 aaaa

    339347ea516d

    image.png

    如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在!

    如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示

    >>> f.read()

    'Hello, world!'

    最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

    f.close()

    由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

    try:

    f = open('/path/to/file', 'r')

    print(f.read())

    finally:

    if f:

    f.close()

    但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

    with open('/path/to/file', 'r') as f:

    print(f.read())

    这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

    总结:以后读写文件都使用with open语句,不要再像以前那样用f = open()这种语句了!

    作者:可爱的小虫虫

    展开全文
  • php导入csv文件以及碰到乱码解决方法

    万次阅读 多人点赞 2013-12-22 11:45:47
    今天主要是想写一个php导入csv文件的方法,其实网上一搜一大把。都是可以实现怎么去导入的。但是我导入的时候遇到了两个问题,一个是在windows上写代码的时候测试发生了乱码问题,然后解决了。第二个是提交到linux...
  • 一、CSV数据导入函数fgetcsv()fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。与fgets()类似,不同的是 fgetcsv() 解析读入的行并找出 CSV 格式的字段,然后返回一个包含这些字段的数组。fgetcsv() 出错时返回...
  • path='D:\python38\Python从入门到实践\基础知识练习\pac.csv' matrix.to_csv(path,sep=',',index=False,header=False)
  • 结合sqlite3的学生信息成绩管理系统(六):导入数据文件import_data.py,主要将excel中的数据导入数据库中,为了防止出错,简单模仿了SQL Server的导入,还有单独导入科目成绩的选项。
  • csv 准备csv文件 csv导入 mysql> LOAD DATA INFILE '/var/lib/mysql-files/Movies.csv' INTO TABLE movie_tbl -> CHARACTER SET utf8 -> FIELDS TERMINATED BY ',' -> LINES TERMINATED BY '\r\n' -> IGNORE 1 ...
  • python pandas.read_csv()函数详解

    万次阅读 多人点赞 2021-03-24 15:20:19
    这里将更新最新的最全面的read_csv()函数功能以及参数介绍,参考资料来源于官网。 目录pandas库简介csv文件格式简介函数介绍函数原型函数参数以及含义输入返回函数使用实例 pandas库简介 官方网站里详细说明了pandas...
  • 在python中将CSV转换为数组(Convert from CSV to array in Python)我有一个包含以下内容的CSV文件。0.000264,0.000352,0.000087,0.0005490.00016,0.000223,0.000011,0.0001420.008853,0.006519,0.002043,0.0098190....
  • python怎么导入数据

    2021-01-14 19:23:36
    通过标准的Python库导入CSV文件:Python...这个类库中的reader()函数用来导入CSV文件。当CSV文件被读入后,可以利用这些数据生成一个NumPy数组,用来训练算法模型:云海天教程网,大量的免费python教程,欢迎在线学习!...
  • Python处理CSV文件(三)

    千次阅读 2021-02-27 23:44:18
    (1) 在电子表格程序中打开 supplier_data.csv。 (2) 删除文件中的第一行(即包含列标题的标题行)。 (3) 将文件保存为 supplier_data_no_header_row.csv。如图 2-11 所示。 图 2-11:包含数据行的 CSV 文件,没有...
  • python csv 删除列

    千次阅读 2020-11-29 12:14:22
    我的input.csv看起来是这样的: day,month,year,lat,long01,04,2001,45.00,120.0002,04,2003,44.00,118.00 我试图删除“year”栏及其所有条目。 总共有40多个条目,从1960年到2010年不等...我有以下标...
  • Python处理CSV文件(一)

    千次阅读 2021-02-27 23:40:14
    CSV 文件 CSV(comma-separated value,逗号分隔值)文件格式是一种非常简单的数据存储与分享方式。CSV 文件将数据表格存储为纯文本,表格(或电子表格)中的每个单元格都是一个数值或字符串。与 Excel 文件相比,...
  • CSV文件读取和处理

    千次阅读 2017-06-21 14:59:38
    不需要使用专门的CSV软件来导入CSV文件。使用最简单的文本编辑器就可以打开CSV文件。 对于大多数编程语言而言,读取编写CSV文件的程序会相对简单。 任何电子表格应用都可以用来读取CSV文件。 使用Python对CSV文件...
  • python爬取电影票房网并保存csv

    千次阅读 2020-04-13 15:13:13
    import requests from bs4 import BeautifulSoup import bs4 import csv def getHTMLText(url): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ...
  • 行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误。PS:已经被这个错误坑过很多次!使用python I/O写入和读取CSV文件使用PythonI/O写入csv文件...
  • 一、OS模块os模块用来直接调用操作系统提供的接口函数,进而操作文件和目录。1.1 常用路径的方法sys.path[0] 是指运行main的路径,就是主路径os.path.dirname(os.path.abspath("__file__")) 当前运行文件的路径os....
  • 11.1 csv--CSV文件读写库

    千次阅读 2016-05-22 21:50:35
    11.1 csv--CSV文件读写库本模块主要提供了对CSV文件进行操作的功能,因为CSV文件在电子表格和数据库方面都大量地使用,把它当作一种数据交换方式,比如从数据库导出生成电子表格,或者从电子表格导入到数据库。...
  • 先说解决办法将sql文件放到你的账号能够访问的地方!!!因为我用的grid账号,...Don’t place the sql you wanna import under ‘/root’ directory, place it where your account can access, such as your hom...
  • 最近做了一个实验,实验得到的结果是一个个的表格,我们需要通过表格做一个topn,然后进行分析。...[str(number)+“prob”+model_name+"_id.csv",str(number)+“prob”+model_name+"_label.csv",str(number)+“pro.
  • 参考文章:python文件读写小结 - 周洋 - 博客园 Python读取文件的几种方法 - poowicat - 博客园 python读取... # # 二、需要导入import os # # 三、下面是逐行读取文件内容的三种方法: # 方法一: def read_line():...
  • mysql 的load data local infile命令 11
  • 如何在Python中读取和写入CSV文件

    千次阅读 2020-06-18 15:14:10
    CSV格式是数据库和电子表格最常用的导入和导出格式。 本教程将详细介绍CSV以及可用于将数据读取和写入CSV文件的模块和类。 它还将介绍一个工作示例,向您展示如何在Python中读取数据并将数据写入CSV文件。 什么是...
  • For循环或类似于for循环的方法受限于太过分明的层次,不够简洁与灵活,注意力成本高,易出错。本文介绍sklearn模块的GridSearchCV模块,能够在指定的范围内自动搜索具有不同超参数的不同模型组合,有效解放注...
  • 【MATLAB】第六章 文件操作

    千次阅读 2019-05-02 18:08:59
    第六章 文件操作 一、文件、数据的存储 二、数据导入 三、文件的打开 四、文本文件的读写 五、低层文件I/O操作 六、Excel文件操作

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,685
精华内容 674
关键字:

importdata函数导入csv出错

友情链接: JpegEncoder.rar