Giter Club home page Giter Club logo

singletableimporter's Introduction

SingleTableImporter

This class is intended as a simple importer for moving source data into a single MySQL table. It provides a few automations, such as text alterations, and date alterations, which is why it might be better than simply importing the file with phpMyAdmin or something similar. It supports currently supports CSV files and single-worksheet Excel spreadsheets, and assumes that the first row of data corresponds exactly to the column names in the MySQL database.

Dependencies

  • PHP 5.3.2 or higher
  • MySQL 5.5 or higher

Dev dependencies

  • Composer

Installation

Use composer to bring this into your PHP project. The composer.json should look like this:

{
    "require": {
        "usdoj/singletableimporter": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/usdoj/singletableimporter.git"
        }
    ]
}

After creating a composer.json similar to the above, do a "composer install".

Usage

To use the library you need to include the autoloader, and then instantiate the object referencing your configuration and source data file. The configuration must be an object of the \Noodlehaus\Config class. Then you simply call the run() method. For example:

require_once '/path/to/my/libraries/csvtomysql/vendor/autoload.php';
$config = new \Noodlehaus\Config('/path/to/my/configFile.yml');
$sourceFile = '/path/to/my/sourceFile.csv';
$importer = new \USDOJ\CsvToMysql\Importer($config, $sourceFile);
$importer->run();

Configuration

The library depends on configuration in an \Noodlehaus\Config object. Here are examples (in YAML) of the settings that should exist in that config object:

# Database credentials: this is the only required section.
database name: myDatabase
database user: myUser
database password: myPassword
database host: localhost
database table: myTable

# If there are any special characters or phrases that need to be altered when
# importing the data from the CSV file, indicate those here. For example, to
# change all occurences of § with § uncomment the lines below.
#text alterations:
#    "§": "§"
# Additionally you can specify alterations for a particular column only.
#text alterations per column:
#    myDatabaseColumn1:
#        "§": "§"

# If the environment needs to use a proxy, uncomment and fill out this section.
# proxy: 192.168.1.1:8080

# To prevent the use of the proxy for certain URLs, enter partial patterns here.
# proxy exceptions:
#    - .example.com

# To use a certain user agent for remote requests, uncomment and indicate here.
# user agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36

# Date values can be in a wide range of formats. This library tries to be
# forgiving, but sometimes you need to specify the specific format. The
# syntax to use here is what would be passed to DateTime::createFromFormat.
# Reference: http://php.net/manual/en/datetime.createfromformat.php
# Note that each column has an array of formats, to allow for multipel formats
# within a single column.
date formats:
    "myDatabaseColumn":
        # Parse date values like 11/7/2011 (November 7th, 2011)
        - "n/j/Y"
        # Parse date values like 11-07-11 (November 7th, 2011)
        - "m-d-y"

# Indicate the columns that are required to have data in order for a row to
# to be imported. For example, if you don't want any rows to be imported
# without titles, make your title column a required column here.
required columns:
    - myDatabaseColumn1

# Set the delimiter for CSV imports. Defaults to a comma.
csv delimiter: ','

# Set the enclosure for CSV imports Defaults to a double-quote.
csv enclosure: '"'

# Allow for imports that will be "additive". If set to FALSE then each
# import will start by deleting all rows.
additive imports: FALSE

singletableimporter's People

Contributors

brockfanning avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.