Question CSV et Remplacement de caractères

Plus d'informations
il y a 12 ans 4 mois #16306 par Philippe
alors pour le type tu rajoute -notype a ta cmdlet export-csv

mais pour les guillemets sur les noms des champs ???
je pense que c'est le format standard des fichier CSV
et que ca ne doit probablement pas poser de probleme pour l'utilisation que tu en fait, mais je suis pas pro fichier txt/csv
et je peut pas tester ton utilisation pour toi :(

fait nous un retour si c'est un reel probleme et on cherchera une solution (soit pour l'export ou soit pour un remplace different)

Laurent Dardenne écrit:

La tienne est mieux documentée.

merci mais j'ai pas expliqué le astuce pour les guillemets
et j'ai pas retrouver de tuto sur le net pour ce point la

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16307 par Laurent Dardenne
6ratgus écrit:

je pense que c'est le format standard des fichier CSV

Oui je pense aussi, lire la RFC pour confirmation :P
Sinon une solution pour supprimer les guillemets .

Ici une autre approche pour l'import de données dans un base SqlServer via BCP:
[code:1]
function Skip-Count() {
#jaredpar's WebLog
# Skip the specified number of items
#Example:
#
#1..10 | skip-count 5 #renvoi 6..10
#Ignore un nombre spécifié d'éléments dans une séquence puis retourne les éléments restants.

param ( $count = $(throw \"Need a count\"«») )
begin {
$i = 0
}
process {
if ( $i -ge $count ) {
$_
}
$i += 1
}
end {}
}

Function ConvertTo-CsvNoQuote([string]$PathCsv)
{
#remplace les guillemets
$T=Get-content $PathCsv|% { $_ -replace '\"',\"\"}
#retire la première ligne contenant les noms des champs
$T|Skip-Count 1|Set-content $PathCsv
}


$bcpPath=\"c:\Program Files\Microsoft SQL Server\90\Tools\binn\bcp.exe\"
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16308 par Dionne Sylvain
Bonjour, merci de votre aide, je vais en avoir encore besoin.
Comme je ne suis pas très bon en PowerShell, j'ai des idées mais peu de moyen.

Donc il faut que les titres soient sans guillements, donc que pensez-vous de traiter le fichier source ligne par ligne sauf la première.

Donc la fonction serait:
- lire la première ligne dans une variable titre
- Ouvrir un fichier destination et écrire la première ligne
- traiter toutes les autres lignes pour enlever les guillemets avec le code de Laurent ça fonctionne très bien.
- Écrire chaque ligne traitée dans le fichier destination.

Qu'en pensez-vous?
Merci
SDionne

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16309 par Laurent Dardenne
sdionne écrit:

Qu'en pensez-vous?

C'est une solution, une autre similaire :
[code:1]
Import-csv c:\temp\datas.csv -Delimiter \";\" |
Foreach {$_.Titre=$_.Titre -replace '\"','';$_}|
ConvertTo-Csv -NoTypeInformation |
foreach -Begin { $isChange=$true } `
-Process {
$Line=$_
if ($isChange )
{
$Line=$Line -replace '\"',''
$isChange=$false
}
$Line
}|
Set-content 'c:\temp\datas2.csv'

type 'c:\temp\datas2.csv'
[/code:1]
En entrée on utilise tjr le format CSV et l'usage de ConvertTo-Csv permet de traiter une ligne de texte. Enfin on enregistre les lignes tout en traitant l'exception pour la première ligne.<br><br>Message édité par: Laurent Dardenne, à: 7/11/13 12:37

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 4 mois #16315 par Dionne Sylvain
Bonjour Laurent, merci beaucoup pour cette dernière solution, ça donne exactement le résultat escompté.

Encore Merci:woohoo:

SDionne

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.053 secondes
Propulsé par Kunena